- if(class<3 && st->codec->codec_id == CODEC_ID_NONE)
- av_log(s, AV_LOG_ERROR, "Unknown codec?!\n");
-
- GET_V(stc->time_base_id , tmp < nut->time_base_count);
- GET_V(stc->msb_pts_shift , tmp < 16);
- stc->max_pts_distance= ff_get_v(bc);
- GET_V(stc->decode_delay , tmp < 1000); //sanity limit, raise this if Moore's law is true
- st->codec->has_b_frames= stc->decode_delay;
- ff_get_v(bc); //stream flags
-
- GET_V(st->codec->extradata_size, tmp < (1<<30));
- if(st->codec->extradata_size){
- st->codec->extradata= av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
- get_buffer(bc, st->codec->extradata, st->codec->extradata_size);
- }
-
- if (st->codec->codec_type == CODEC_TYPE_VIDEO){
- GET_V(st->codec->width , tmp > 0)
- GET_V(st->codec->height, tmp > 0)
- st->sample_aspect_ratio.num= ff_get_v(bc);
- st->sample_aspect_ratio.den= ff_get_v(bc);
- if((!st->sample_aspect_ratio.num) != (!st->sample_aspect_ratio.den)){
- av_log(s, AV_LOG_ERROR, "invalid aspect ratio %d/%d\n", st->sample_aspect_ratio.num, st->sample_aspect_ratio.den);
- return -1;
+ if (class < 3 && st->codec->codec_id == AV_CODEC_ID_NONE)
+ av_log(s, AV_LOG_ERROR,
+ "Unknown codec tag '0x%04x' for stream number %d\n",
+ (unsigned int) tmp, stream_id);
+
+ GET_V(stc->time_base_id, tmp < nut->time_base_count);
+ GET_V(stc->msb_pts_shift, tmp < 16);
+ stc->max_pts_distance = ffio_read_varlen(bc);
+ GET_V(stc->decode_delay, tmp < 1000); // sanity limit, raise this if Moore's law is true
+ ffio_read_varlen(bc); // stream flags
+
+ GET_V(st->codec->extradata_size, tmp < (1 << 30));
+ if (st->codec->extradata_size) {
+ st->codec->extradata = av_mallocz(st->codec->extradata_size +
+ FF_INPUT_BUFFER_PADDING_SIZE);
+ avio_read(bc, st->codec->extradata, st->codec->extradata_size);
+ }
+
+ if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+ GET_V(st->codec->width, tmp > 0);
+ GET_V(st->codec->height, tmp > 0);
+ st->sample_aspect_ratio.num = ffio_read_varlen(bc);
+ st->sample_aspect_ratio.den = ffio_read_varlen(bc);
+ if ((!st->sample_aspect_ratio.num) != (!st->sample_aspect_ratio.den)) {
+ av_log(s, AV_LOG_ERROR, "invalid aspect ratio %d/%d\n",
+ st->sample_aspect_ratio.num, st->sample_aspect_ratio.den);
+ return AVERROR_INVALIDDATA;