ch->sample_num--;
} else {
if (ch->to_init && ch->sample_num) {
- GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[IsoMedia] Failed to fetch initial sample %d for track %d\n"));
+ GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[IsoMedia] Failed to fetch initial sample %d for track %d\n", ch->sample_num, ch->track));
ch->last_state = GF_ISOM_INVALID_FILE;
- }
- if (ch->sample_num >= gf_isom_get_sample_count(ch->owner->mov, ch->track)) {
+ } else {
+ GF_LOG(GF_LOG_ERROR, GF_LOG_CONTAINER, ("[IsoMedia] File truncated, aborting read for track %d\n", ch->track));
ch->last_state = GF_EOS;
}
}
}
} else {
GF_LOG(GF_LOG_DEBUG, GF_LOG_DASH, ("[IsoMedia] Track #%d fail to fetch sample %d / %d: %s\n", ch->track, ch->sample_num, gf_isom_get_sample_count(ch->owner->mov, ch->track), gf_error_to_string(gf_isom_last_error(ch->owner->mov)) ));
+ if ((e<GF_OK) && (e!=GF_ISOM_INCOMPLETE_FILE)) {
+ ch->last_state = GF_EOS;
+ }
}
return;
}
GF_ISOSample *samp;
if (safs[i].last_sample==safs[i].nb_samp) continue;
samp = gf_isom_get_sample(dumper->file, safs[i].track_num, safs[i].last_sample + 1, &di);
+ if (!samp) {
+ gf_saf_mux_del(mux);
+ return gf_isom_last_error(dumper->file);
+ }
+
gf_saf_mux_add_au(mux, safs[i].stream_id, (u32) (samp->DTS+samp->CTS_Offset), samp->data, samp->dataLength, (samp->IsRAP==RAP) ? 1 : 0);
/*data is kept by muxer!!*/
gf_free(samp);
}
if (!sdump->XMLDump) gf_fprintf(sdump->trace, "[");
- for (i=0; i<mffield->count; i++) {
- if (i) gf_fprintf(sdump->trace, " ");
- gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
- gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, 1, node);
+ if (mffield) {
+ for (i=0; i<mffield->count; i++) {
+ if (i) gf_fprintf(sdump->trace, " ");
+ gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
+ gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, 1, node);
+ }
}
if (!sdump->XMLDump) gf_fprintf(sdump->trace, "]");
} else {
gf_fprintf(sdump->trace, " %s=\"", GetXMTFieldTypeValueName(field.fieldType));
}
- for (i=0; i<mffield->count; i++) {
- if (i) gf_fprintf(sdump->trace, " ");
- if (field.fieldType != GF_SG_VRML_MFNODE) {
- gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
- gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, (mffield->count>1) ? 1 : 0, node);
+ if (mffield) {
+ for (i=0; i<mffield->count; i++) {
+ if (i) gf_fprintf(sdump->trace, " ");
+ if (field.fieldType != GF_SG_VRML_MFNODE) {
+ gf_sg_vrml_mf_get_item(field.far_ptr, field.fieldType, &slot_ptr, i);
+ gf_dump_vrml_sffield(sdump, sf_type, slot_ptr, (mffield->count>1) ? 1 : 0, node);
+ }
}
}
gf_fprintf(sdump->trace, "\"/>\n");