u64 last_SAP_PTS;
u32 last_SAP_offset;
+ /*Interpolated PCR value for the pcrb*/
+ u64 interpolated_pcr_value;
+ u64 last_pcr_value;
+
/* information about the first PAT found in the subsegment */
u32 last_pat_position;
u32 first_pat_position;
//GF_List *sidxs;
GF_SegmentIndexBox *sidx;
+
+ //GF_List *pcrbs;
+ GF_PcrInfoBox *pcrb;
} GF_M2TS_IndexingInfo;
typedef struct
ref->SAP_delta_time = (sap_type ? RAP_delta_time: 0);
}
+static void m2ts_pcrb_add_entry(GF_PcrInfoBox *pcrb, u64 interpolatedPCR)
+{
+ pcrb->subsegment_count++;
+ pcrb->pcr_values = gf_realloc(pcrb->pcr_values, pcrb->subsegment_count*sizeof(u64));
+
+ pcrb->pcr_values[pcrb->subsegment_count-1] = interpolatedPCR;
+}
+
static void m2ts_sidx_update_prev_entry_duration(GF_SegmentIndexBox *sidx, u32 duration)
{
GF_SIDXReference *ref;
GF_LOG(GF_LOG_DEBUG, GF_LOG_CONTAINER, ("Segment: Reference PID: %d, EPTime: "LLU", Start Offset: %d bytes\n", index_info->reference_pid, index_info->base_PTS, index_info->base_offset));
index_info->sidx = m2ts_sidx_new(index_info->reference_pid, index_info->base_PTS, index_info->base_offset);
}
+
+ if (!index_info->pcrb) {
+ index_info->pcrb = (GF_PcrInfoBox *)gf_isom_box_new(GF_ISOM_BOX_TYPE_PCRB);
+ }
/* determine the end of the current index */
if (index_info->segment_at_rap) {
SAP_delta_time= (u32)(index_info->first_SAP_PTS - index_info->base_PTS);
SAP_offset = (u32)(index_info->first_SAP_offset - index_info->base_offset);
m2ts_sidx_add_entry(index_info->sidx, 0, size, duration, index_info->first_pes_sap, index_info->SAP_type, SAP_delta_time);
+ m2ts_pcrb_add_entry(index_info->pcrb, index_info->interpolated_pcr_value);
/* adjust the previous index duration */
if (index_info->sidx->nb_refs > 0 && (index_info->base_PTS < index_info->prev_last_PTS) ) {
if (gf_list_count(ts->programs)>1 && pck->stream->program->number != dumper->prog_number)
break;
if (dumper->has_seen_pat) {
- if (dumper->timestamps_info_file) {
- GF_M2TS_PES *pes = pck->stream;
- /*FIXME : not used GF_M2TS_Program *prog = pes->program; */
- /* Interpolated PCR value for the TS packet containing the PES header start */
- u64 interpolated_pcr_value = 0;
- if (pes->last_pcr_value && pes->before_last_pcr_value && pes->last_pcr_value > pes->before_last_pcr_value) {
- u32 delta_pcr_pck_num = pes->last_pcr_value_pck_number - pes->before_last_pcr_value_pck_number;
- u32 delta_pts_pcr_pck_num = pes->pes_start_packet_number - pes->last_pcr_value_pck_number;
- u64 delta_pcr_value = pes->last_pcr_value - pes->before_last_pcr_value;
- /* we can compute the interpolated pcr value for the packet containing the PES header */
- interpolated_pcr_value = pes->last_pcr_value + (u64)((delta_pcr_value*delta_pts_pcr_pck_num*1.0)/delta_pcr_pck_num);
- }
+ /*We need the interpolated PCR for the pcrb, hence moved this calculus out, and saving the calculated value in index_info to put it in the pcrb*/
+ GF_M2TS_PES *pes = pck->stream;
+ /*FIXME : not used GF_M2TS_Program *prog = pes->program; */
+ /* Interpolated PCR value for the TS packet containing the PES header start */
+ u64 interpolated_pcr_value = 0;
+ if (pes->last_pcr_value && pes->before_last_pcr_value && pes->last_pcr_value > pes->before_last_pcr_value) {
+ u32 delta_pcr_pck_num = pes->last_pcr_value_pck_number - pes->before_last_pcr_value_pck_number;
+ u32 delta_pts_pcr_pck_num = pes->pes_start_packet_number - pes->last_pcr_value_pck_number;
+ u64 delta_pcr_value = pes->last_pcr_value - pes->before_last_pcr_value;
+ /* we can compute the interpolated pcr value for the packet containing the PES header */
+ interpolated_pcr_value = pes->last_pcr_value + (u64)((delta_pcr_value*delta_pts_pcr_pck_num*1.0)/delta_pcr_pck_num);
+ index_info->interpolated_pcr_value = interpolated_pcr_value;
+ index_info->last_pcr_value = pes->last_pcr_value;
+ }
+
+ if (dumper->timestamps_info_file) {
fprintf(dumper->timestamps_info_file, "%u\t%d\t", pck->stream->pes_start_packet_number, pck->stream->pid);
if (interpolated_pcr_value) fprintf(dumper->timestamps_info_file, "%f", interpolated_pcr_value/(300.0 * 90000));
fprintf(dumper->timestamps_info_file, "\t");
dumper.index_info.index_bs = gf_bs_from_file(dumper.index_info.index_file, GF_BITSTREAM_WRITE);
{
GF_SegmentTypeBox *styp = (GF_SegmentTypeBox *)gf_isom_box_new(GF_ISOM_BOX_TYPE_STYP);
- styp->majorBrand = GF_4CC('s','i','s','x');
+ styp->majorBrand = GF_4CC('r','i','s','x');
styp->minorVersion = 0;
styp->altBrand = (u32*)gf_malloc(sizeof(u32));
styp->altBrand[0] = styp->majorBrand;
gf_isom_box_size((GF_Box *)dumper.index_info.sidx);
if (dumper.index_info.index_bs) gf_isom_box_write((GF_Box *)dumper.index_info.sidx, dumper.index_info.index_bs);
gf_isom_box_del((GF_Box *)dumper.index_info.sidx);
+ }
+
+ // ToDo: Should be configurable by some switch
+ if (dumper.index_info.pcrb) {
+ gf_isom_box_size((GF_Box *)dumper.index_info.pcrb);
+ if (dumper.index_info.index_bs) gf_isom_box_write((GF_Box *)dumper.index_info.pcrb, dumper.index_info.index_bs);
+ gf_isom_box_del((GF_Box *)dumper.index_info.pcrb);
+
}
if (dumper.index_info.mpd_file) fclose(dumper.index_info.mpd_file);
if (dumper.index_info.index_file) fclose(dumper.index_info.index_file);
u32 stop_state;
} TKInfo;
-GF_Err split_isomedia_file(GF_ISOFile *mp4, Double split_dur, u32 split_size_kb, char *inName, Double InterleavingTime, Double chunk_start_time, Bool adjust_split_end, const char *tmpdir)
+GF_Err split_isomedia_file(GF_ISOFile *mp4, Double split_dur, u32 split_size_kb, char *inName, Double InterleavingTime, Double chunk_start_time, Bool adjust_split_end, char *outName, const char *tmpdir)
{
u32 i, count, nb_tk, needs_rap_sync, cur_file, conv_type, nb_tk_done, nb_samp, nb_done, di;
Double max_dur, cur_file_time;
if (chunk_extraction) {
sprintf(szFile, "%s_%d_%d%s", szName, (u32) chunk_start, (u32) (chunk_start+split_dur), ext);
+ if (outName) strcpy(szFile, outName);
} else {
sprintf(szFile, "%s_%03d%s", szName, cur_file+1, ext);
}
}
if (chunk_extraction) {
- fprintf(stdout, "Extracting chunk %s - duration %02.2f seconds\n", szFile, file_split_dur);
+ fprintf(stdout, "Extracting chunk %s - duration %02.2fs (%02.2fs->%02.2fs)\n", szFile, file_split_dur, chunk_start, (chunk_start+split_dur));
} else {
fprintf(stdout, "Storing split-file %s - duration %02.2f seconds\n", szFile, file_split_dur);
}
#ifndef GPAC_DISABLE_ISOM_WRITE
GF_Err import_file(GF_ISOFile *dest, char *inName, u32 import_flags, Double force_fps, u32 frames_per_sample);
-GF_Err split_isomedia_file(GF_ISOFile *mp4, Double split_dur, u32 split_size_kb, char *inName, Double InterleavingTime, Double chunk_start, Bool adjust_split_end, const char *tmpdir);
+GF_Err split_isomedia_file(GF_ISOFile *mp4, Double split_dur, u32 split_size_kb, char *inName, Double InterleavingTime, Double chunk_start, Bool adjust_split_end, char *outName, const char *tmpdir);
GF_Err cat_isomedia_file(GF_ISOFile *mp4, char *fileName, u32 import_flags, Double force_fps, u32 frames_per_sample, char *tmp_dir, Bool force_cat);
#if !defined(GPAC_DISABLE_MEDIA_IMPORT) && !defined(GPAC_DISABLE_SCENE_ENCODER)
#if !(definedGPAC_DISABLE_ISOM_WRITE) && !defined(GPAC_DISABLE_MEDIA_IMPORT)
if (split_duration || split_size) {
- split_isomedia_file(file, split_duration, split_size, inName, InterleavingTime, split_start, adjust_split_end, tmpdir);
+ split_isomedia_file(file, split_duration, split_size, inName, InterleavingTime, split_start, adjust_split_end, outName, tmpdir);
/*never save file when splitting is desired*/
open_edit = 0;
needSave = 0;
echo "DVB Support: $has_dvb4linux"
fi
-echo "XMLPRC Support: $has_xmlrpc"
+echo "XMLRPC Support: $has_xmlrpc"
if test "$wx_too_old" = "yes" ; then
has_wx="no"
GF_ISOM_BOX_TYPE_STYP = GF_4CC( 's', 't', 'y', 'p' ),
GF_ISOM_BOX_TYPE_TFDT = GF_4CC( 't', 'f', 'd', 't' ),
GF_ISOM_BOX_TYPE_SIDX = GF_4CC( 's', 'i', 'd', 'x' ),
+ GF_ISOM_BOX_TYPE_PCRB = GF_4CC( 'p', 'c', 'r', 'b' ),
/*3GPP text / MPEG-4 StreamingText*/
GF_ISOM_BOX_TYPE_FTAB = GF_4CC( 'f', 't', 'a', 'b' ),
GF_SIDXReference *refs;
} GF_SegmentIndexBox;
+typedef struct __pcrInfo_box
+{
+ GF_ISOM_BOX
+ u32 subsegment_count;
+ u64 *pcr_values;
+} GF_PcrInfoBox;
+
/***********************************************************
GF_Err sidx_Size(GF_Box *s);
GF_Err sidx_dump(GF_Box *a, FILE * trace);
+GF_Box *pcrb_New();
+void pcrb_del(GF_Box *s);
+GF_Err pcrb_Read(GF_Box *s, GF_BitStream *bs);
+GF_Err pcrb_Write(GF_Box *s, GF_BitStream *bs);
+GF_Err pcrb_Size(GF_Box *s);
+GF_Err pcrb_dump(GF_Box *a, FILE * trace);
+
GF_Box *subs_New();
void subs_del(GF_Box *);
GF_Err subs_Write(GF_Box *s, GF_BitStream *bs);
{
if (!dd->fullscreen && (dd->os_hwnd==dd->fs_hwnd)) {
- SetWindowPos(dd->os_hwnd, NULL, 0, 0, dd->width+dd->off_w, dd->height+dd->off_h, SWP_NOZORDER | SWP_NOMOVE | SWP_ASYNCWINDOWPOS);
+ SetWindowPos(dd->os_hwnd, NULL, 0, 0, dd->store_width+dd->off_w, dd->store_height+dd->off_h, SWP_NOZORDER | SWP_NOMOVE | SWP_ASYNCWINDOWPOS);
}
- e = InitDirectDraw(dr, dd->width, dd->height);
+ e = InitDirectDraw(dr, dd->store_width, dd->store_height);
}
if (bOn) {
count = gf_list_count(upnp->m_Devices);
for (i=0; i<count; i++) {
GPAC_GenericDevice *device = (GPAC_GenericDevice *)gf_list_get(upnp->m_Devices, i);
- if (device->run_proc) {
+ if (!JSVAL_IS_NULL(device->run_proc)) {
if (!arg_set) {
argv[0] = DOUBLE_TO_JSVAL( JS_NewDouble(upnp->m_pJSCtx, (Double)now / 1000.0) );
arg_set = 1;
{
#ifdef GPAC_HAS_SPIDERMONKEY
obj = NULL;
- on_event = 0;
+ on_event = JSVAL_NULL;
m_StateListeners = gf_list_new();
m_ArgListeners = gf_list_new();
subscribed = 0;
JS_SetPrivate(js_ctx, obj, NULL);
obj = NULL;
}
- if (on_event) {
+ if (!JSVAL_IS_NULL(on_event)) {
gf_js_remove_root(js_ctx, &on_event, GF_JSGC_VAL);
- on_event = NULL;
+ on_event = JSVAL_NULL;
}
while (gf_list_count(m_StateListeners)) {
GPAC_StateVariableListener *svl = (GPAC_StateVariableListener *)gf_list_get(m_StateListeners, 0);
if (!service || !argc || !JSVAL_IS_OBJECT(argv[0])) return JS_FALSE;
if (argc<1) {
- if (service->on_event) gf_js_remove_root(c, &service->on_event, GF_JSGC_VAL);
- service->on_event = NULL;
+ if (!JSVAL_IS_NULL(service->on_event))
+ gf_js_remove_root(c, &service->on_event, GF_JSGC_VAL);
+ service->on_event = JSVAL_NULL;
if (!JSVAL_IS_NULL(argv[0])) {
service->on_event = argv[0];
gf_js_add_root(c, &service->on_event, GF_JSGC_VAL);
svl->var = service->m_service->FindStateVariable(name);
gf_list_add(service->m_StateListeners, svl);
}
- if (svl->on_event) gf_js_remove_root(c, &svl->on_event, GF_JSGC_VAL);
+ if (!JSVAL_IS_NULL(svl->on_event))
+ gf_js_remove_root(c, &svl->on_event, GF_JSGC_VAL);
if (JSVAL_IS_NULL(argv[0])) {
gf_list_del_item(service->m_StateListeners, svl);
delete svl;
gf_list_add(service->m_ArgListeners, argl);
}
argl->action = action;
- if (argl->on_event) gf_js_remove_root(c, &argl->on_event, GF_JSGC_VAL);
+ if (!JSVAL_IS_NULL(argl->on_event))
+ gf_js_remove_root(c, &argl->on_event, GF_JSGC_VAL);
if (JSVAL_IS_NULL(argv[1])) {
gf_list_del_item(service->m_ArgListeners, argl);
delete argl;
}
if (!serv) return NPT_SUCCESS;
- if (serv->on_event) {
+ if (!JSVAL_IS_NULL(serv->on_event)) {
jsval rval;
m_pUPnP->LockJavascript(1);
serv->vars = vars;
void GPAC_GenericDevice::DetachJS(JSContext *c)
{
u32 i, count;
- if (obj) gf_js_remove_root(c, &obj, GF_JSGC_OBJECT);
+ if (obj)
+ gf_js_remove_root(c, &obj, GF_JSGC_OBJECT);
obj = NULL;
- if (run_proc) gf_js_remove_root(c, &run_proc, GF_JSGC_VAL);
- run_proc = NULL;
- if (act_proc) gf_js_remove_root(c, &act_proc, GF_JSGC_VAL);
- act_proc = NULL;
+ if (!JSVAL_IS_NULL(run_proc))
+ gf_js_remove_root(c, &run_proc, GF_JSGC_VAL);
+ run_proc = JSVAL_NULL;
+ if (!JSVAL_IS_NULL(act_proc))
+ gf_js_remove_root(c, &act_proc, GF_JSGC_VAL);
+ act_proc = JSVAL_NULL;
count = gf_list_count(m_pServices);
for (i=0; i<count; i++) {
GF_LOG(GF_LOG_INFO, GF_LOG_NETWORK, ("[UPnP] Action %s called (thread %d)\n", (char *) name, gf_th_id() ));
#ifdef GPAC_HAS_SPIDERMONKEY
- if (!act_proc) {
+ if (JSVAL_IS_NULL(act_proc)) {
gf_mx_v(m_pMutex);
return NPT_SUCCESS;
}
{
public:
GPAC_StateVariableListener() {
- on_event = NULL;
+ on_event = JSVAL_NULL;
name = "";
var = NULL;
}
{
public:
GPAC_ActionArgListener() {
- on_event = NULL;
+ on_event = JSVAL_NULL;
arg = NULL;
action = NULL;
}
class GPAC_ActionUDTA
{
public:
- GPAC_ActionUDTA() { m_Reserved = NULL; udta = 0;}
+ GPAC_ActionUDTA() { m_Reserved = NULL; udta = JSVAL_NULL;}
/*members*/
/*this is used to differentiate browse request from JS (using BrowseDataReference)
vpath %.c $(SRC_PATH)/modules/platinum
-CFLAGS= $(CPPFLAGS) -I"$(SRC_PATH)/include" -I$(SRC_PATH)/extra_lib/include/platinum/
+CFLAGS= $(CPPFLAGS) -I"$(SRC_PATH)/include" -I$(SRC_PATH)/extra_lib/include/platinum/ -DGPAC_HAVE_CONFIG_H -I../..
ifeq ($(DEBUGBUILD), yes)
CFLAGS+=-g
}
#endif /* versions prior to 1.2.10 do not have the size of screen */
- SDLVid_ResizeWindow(dr, 100, 100);
if (!ctx->os_handle) SDLVid_SetCaption();
GF_LOG(GF_LOG_INFO, GF_LOG_MMIO, ("[SDL] Video output initialized - screen resolution %d %d\n", dr->max_screen_width, dr->max_screen_height));
return 1;
which we don't want to do since the setup MUST occur in the rendering thread for some configs (openGL)*/
return GF_NOT_SUPPORTED;
case GF_EVENT_SIZE:
- SDLVid_ResizeWindow(dr, evt->size.width, evt->size.height);
+ {
+ SDLVID();
+ if (ctx->fullscreen) {
+ ctx->store_width = evt->size.width;
+ ctx->store_height = evt->size.height;
+ } else {
+ SDLVid_ResizeWindow(dr, evt->size.width, evt->size.height);
+ }
+ }
break;
case GF_EVENT_MOVE:
break;
ES_Descriptor {
ES_ID 4
OCR_ES_ID 1
+ dependsOn_ES_ID 1
muxInfo MuxInfo {
fileName "../auxiliary_files/subtitle.srt"
textNode "TXT"
compositor->scene_height = Height;
compositor->scene_width = Width;
}
- if (force_size) compositor->has_size_info = 1;
+ if (force_size)
+ compositor->has_size_info = 1;
return GF_OK;
}
if ((compositor->display_width == NewWidth) && (compositor->display_height == NewHeight) ) {
compositor->msg_type |= GF_SR_CFG_WINDOWSIZE_NOTIF;
}
-
if (lock_ok) gf_sc_lock(compositor, 0);
return GF_OK;
return 1;
#else
+/*To remove: gcc 4.6 introduces this warning*/
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 6
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Waddress"
+#endif
if (glActiveTexture==NULL) {
tx_bind(b_surf);
return 1;
}
+/*To remove: gcc 4.6 introduces this warning*/
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 6
+#pragma GCC diagnostic pop
+#endif
matte_hdl = gf_node_get_private(n);
if (!matte_hdl->tx_io) {
gf_sc_texture_allocate(matte_hdl);
#endif /*GPAC_DISABLE_ISOM_WRITE*/
+GF_Box *pcrb_New()
+{
+ GF_PcrInfoBox *tmp;
+
+ GF_SAFEALLOC(tmp, GF_PcrInfoBox);
+ if (tmp == NULL) return NULL;
+ tmp->type = GF_ISOM_BOX_TYPE_PCRB;
+ return (GF_Box *)tmp;
+}
+
+void pcrb_del(GF_Box *s)
+{
+ GF_PcrInfoBox *ptr = (GF_PcrInfoBox *) s;
+ if (ptr == NULL) return;
+ if (ptr->pcr_values) gf_free(ptr->pcr_values);
+ gf_free(ptr);
+}
+
+GF_Err pcrb_Read(GF_Box *s,GF_BitStream *bs)
+{
+ u32 i;
+ GF_PcrInfoBox *ptr = (GF_PcrInfoBox*) s;
+
+ ptr->subsegment_count = gf_bs_read_u32(bs);
+ ptr->size -= 4;
+
+ ptr->pcr_values = gf_malloc(sizeof(u64)*ptr->subsegment_count);
+ for (i=0; i<ptr->subsegment_count; i++) {
+ u64 data1 = gf_bs_read_u32(bs);
+ u64 data2 = gf_bs_read_u32(bs);
+ ptr->size -= 8;
+ ptr->pcr_values[i] = (data1 << 10) | (data2 >> 22);
+
+ }
+ return GF_OK;
+}
+
+#ifndef GPAC_DISABLE_ISOM_WRITE
+
+GF_Err pcrb_Write(GF_Box *s, GF_BitStream *bs)
+{
+ GF_Err e;
+ u32 i;
+ GF_PcrInfoBox *ptr = (GF_PcrInfoBox*) s;
+
+ e = gf_isom_box_write_header(s, bs);
+ if (e) return e;
+
+ gf_bs_write_u32(bs, ptr->subsegment_count);
+
+ for (i=0; i<ptr->subsegment_count; i++ ) {
+ u32 data1 = (u32) (ptr->pcr_values[i] >> 10);
+ u32 data2 = (u32) ((ptr->pcr_values[i]& 0x3FF) << 22);
+
+ gf_bs_write_u32(bs, data1);
+ gf_bs_write_u32(bs, data2);
+ }
+ return GF_OK;
+}
+
+GF_Err pcrb_Size(GF_Box *s)
+{
+ GF_Err e;
+ GF_PcrInfoBox *ptr = (GF_PcrInfoBox*) s;
+ e = gf_isom_box_get_size(s);
+ if (e) return e;
+
+ ptr->size += 4;
+ ptr->size += ptr->subsegment_count * 8;
+
+ return GF_OK;
+}
+
+#endif /*GPAC_DISABLE_ISOM_WRITE*/
GF_Box *subs_New()
return lsrc_dump(a, trace);
case GF_ISOM_BOX_TYPE_SIDX:
return sidx_dump(a, trace);
+ case GF_ISOM_BOX_TYPE_PCRB:
+ return pcrb_dump(a, trace);
default: return defa_dump(a, trace);
}
GF_Err gf_isom_dump(GF_ISOFile *mov, FILE * trace)
{
GF_Err gf_box_dump(void *ptr, FILE * trace);
- void BadTopBoxErr(GF_Box *a, FILE * trace);
u32 i;
GF_Box *box;
if (!mov || !trace) return GF_BAD_PARAM;
case GF_ISOM_BOX_TYPE_MOOF:
case GF_ISOM_BOX_TYPE_STYP:
case GF_ISOM_BOX_TYPE_SIDX:
+ case GF_ISOM_BOX_TYPE_PCRB:
#endif
break;
return GF_OK;
}
+GF_Err pcrb_dump(GF_Box *a, FILE * trace)
+{
+ u32 i;
+ GF_PcrInfoBox *p = (GF_PcrInfoBox *)a;
+ fprintf(trace, "<MPEG2TSPCRInfoBox subsegment_count=\"%d\">\n", p->subsegment_count);
+ DumpBox(a, trace);
+
+ for (i=0; i<p->subsegment_count; i++) {
+ fprintf(trace, "<PCRInfo PCR=\""LLU"\" />\n", p->pcr_values[i]);
+ }
+ fprintf(trace, "</MPEG2TSPCRInfoBox>\n");
+ return GF_OK;
+}
+
GF_Err subs_dump(GF_Box *a, FILE * trace)
{
u32 entry_count, i, j;
case GF_ISOM_BOX_TYPE_SIDX: return sidx_New();
case GF_ISOM_BOX_TYPE_SUBS: return subs_New();
case GF_ISOM_BOX_TYPE_TFDT: return tfdt_New();
+ case GF_ISOM_BOX_TYPE_PCRB: return pcrb_New();
#endif
case GF_ISOM_BOX_TYPE_RVCC: return rvcc_New();
case GF_ISOM_BOX_TYPE_LSR1: lsr1_del(a); return;
case GF_ISOM_BOX_TYPE_SIDX: sidx_del(a); return;
+ case GF_ISOM_BOX_TYPE_PCRB: pcrb_del(a); return;
case GF_ISOM_BOX_TYPE_SUBS: subs_del(a); return;
case GF_ISOM_BOX_TYPE_RVCC: rvcc_del(a); return;
case GF_ISOM_BOX_TYPE_SIDX: return sidx_Read(a, bs);
case GF_ISOM_BOX_TYPE_SUBS: return subs_Read(a, bs);
case GF_ISOM_BOX_TYPE_RVCC: return rvcc_Read(a, bs);
+ case GF_ISOM_BOX_TYPE_PCRB: return pcrb_Read(a, bs);
default:
return defa_Read(a, bs);
case GF_ISOM_BOX_TYPE_LSR1: return lsr1_Write(a, bs);
case GF_ISOM_BOX_TYPE_SIDX: return sidx_Write(a, bs);
+ case GF_ISOM_BOX_TYPE_PCRB: return pcrb_Write(a, bs);
case GF_ISOM_BOX_TYPE_SUBS: return subs_Write(a, bs);
case GF_ISOM_BOX_TYPE_RVCC: return rvcc_Write(a, bs);
case GF_ISOM_BOX_TYPE_LSR1: return lsr1_Size(a);
case GF_ISOM_BOX_TYPE_SIDX: return sidx_Size(a);
+ case GF_ISOM_BOX_TYPE_PCRB: return pcrb_Size(a);
case GF_ISOM_BOX_TYPE_SUBS: return subs_Size(a);
case GF_ISOM_BOX_TYPE_RVCC: return rvcc_Size(a);
case GF_ISOM_BOX_TYPE_MDAT:
case GF_ISOM_BOX_TYPE_FTYP:
#ifndef GPAC_DISABLE_ISOM_FRAGMENTS
+ case GF_ISOM_BOX_TYPE_MOOF:
case GF_ISOM_BOX_TYPE_STYP:
#endif
case GF_ISOM_BOX_TYPE_FREE:
GF_DOMFullNode *n;
GF_DOM_Event evt;
char *str;
- jsval readonly=0;
+ jsval readonly=JSVAL_NULL;
if (!JS_InstanceOf(c, obj, &dom_rt->DCCIClass, NULL) ) return JS_TRUE;
n = (GF_DOMFullNode*) dom_get_node(c, obj);
if (!n) return JS_TRUE;
{0, 0, 0, 0, 0}
};
dom_rt->dom_node_proto = JS_InitClass(c, global, 0, &dom_rt->domNodeClass, 0, 0, nodeProps, nodeFuncs, 0, 0);
+ if (!dom_rt->dom_node_proto) {
+ GF_LOG(GF_LOG_ERROR, GF_LOG_SCRIPT, ("[DOMCore] Not enough memory to initialize JS node class\n"));
+ return;
+ }
GF_LOG(GF_LOG_DEBUG, GF_LOG_SCRIPT, ("[DOMCore] node class initialized\n"));
JS_DefineProperty(c, dom_rt->dom_node_proto, "ELEMENT_NODE", INT_TO_JSVAL(1), 0, 0, JSPROP_READONLY | JSPROP_PERMANENT);
#ifdef __SYMBIAN32__
const long MAX_HEAP_BYTES = 256 * 1024L;
#else
-const long MAX_HEAP_BYTES = 4*1024 * 1024L;
+const long MAX_HEAP_BYTES = 32*1024*1024L;
#endif
const long STACK_CHUNK_BYTES = 8*1024L;