History

tools: Port to codec parameters API

Diego Biurrun committed 10 years ago

Commit b8de14b1 parent 393596f2 files · +47 −46Browse files

Unified · Split

2 files
  1. tools/ismindex.c +30 −30
  2. tools/sidxindex.c +17 −16
tools/ismindex.c+30−30
@@ -450,40 +450,40 @@ fail: · 449 unmodified lines
450 return err;450 return err;
451}451}
452 452
453static int get_private_data(struct Track *track, AVCodecContext *codec)453static int get_private_data(struct Track *track, AVCodecParameters *codecpar)
454{454{
455 track->codec_private_size = codec->extradata_size;455 track->codec_private_size = codecpar->extradata_size;
456 track->codec_private = av_mallocz(codec->extradata_size);456 track->codec_private = av_mallocz(codecpar->extradata_size);
457 if (!track->codec_private)457 if (!track->codec_private)
458 return AVERROR(ENOMEM);458 return AVERROR(ENOMEM);
459 memcpy(track->codec_private, codec->extradata, codec->extradata_size);459 memcpy(track->codec_private, codecpar->extradata, codecpar->extradata_size);
460 return 0;460 return 0;
461}461}
462 462
463static int get_video_private_data(struct Track *track, AVCodecContext *codec)463static int get_video_private_data(struct Track *track, AVCodecParameters *codecpar)
464{464{
465 AVIOContext *io = NULL;465 AVIOContext *io = NULL;
466 uint16_t sps_size, pps_size;466 uint16_t sps_size, pps_size;
467 int err;467 int err;
468 468
469 if (codec->codec_id == AV_CODEC_ID_VC1)469 if (codecpar->codec_id == AV_CODEC_ID_VC1)
470 return get_private_data(track, codec);470 return get_private_data(track, codecpar);
471 471
472 if ((err = avio_open_dyn_buf(&io)) < 0)472 if ((err = avio_open_dyn_buf(&io)) < 0)
473 goto fail;473 goto fail;
474 err = AVERROR(EINVAL);474 err = AVERROR(EINVAL);
475 if (codec->extradata_size < 11 || codec->extradata[0] != 1)475 if (codecpar->extradata_size < 11 || codecpar->extradata[0] != 1)
476 goto fail;476 goto fail;
477 sps_size = AV_RB16(&codec->extradata[6]);477 sps_size = AV_RB16(&codecpar->extradata[6]);
478 if (11 + sps_size > codec->extradata_size)478 if (11 + sps_size > codecpar->extradata_size)
479 goto fail;479 goto fail;
480 avio_wb32(io, 0x00000001);480 avio_wb32(io, 0x00000001);
481 avio_write(io, &codec->extradata[8], sps_size);481 avio_write(io, &codecpar->extradata[8], sps_size);
482 pps_size = AV_RB16(&codec->extradata[9 + sps_size]);482 pps_size = AV_RB16(&codecpar->extradata[9 + sps_size]);
483 if (11 + sps_size + pps_size > codec->extradata_size)483 if (11 + sps_size + pps_size > codecpar->extradata_size)
484 goto fail;484 goto fail;
485 avio_wb32(io, 0x00000001);485 avio_wb32(io, 0x00000001);
486 avio_write(io, &codec->extradata[11 + sps_size], pps_size);486 avio_write(io, &codecpar->extradata[11 + sps_size], pps_size);
487 err = 0;487 err = 0;
488 488
489fail:489fail:
@@ -523,7 +523,7 @@ static int handle_file(struct Tracks *tracks, const char *file, int split, · 33 unmodified lines
523 struct Track **temp;523 struct Track **temp;
524 AVStream *st = ctx->streams[i];524 AVStream *st = ctx->streams[i];
525 525
526 if (st->codec->bit_rate == 0) {526 if (st->codecpar->bit_rate == 0) {
527 fprintf(stderr, "Skipping track %d in %s as it has zero bitrate\n",527 fprintf(stderr, "Skipping track %d in %s as it has zero bitrate\n",
528 st->id, file);528 st->id, file);
529 continue;529 continue;
@@ -548,12 +548,12 @@ static int handle_file(struct Tracks *tracks, const char *file, int split, · 18 unmodified lines
548 if ((ptr = strrchr(file, '/')))548 if ((ptr = strrchr(file, '/')))
549 track->name = ptr + 1;549 track->name = ptr + 1;
550 550
551 track->bitrate = st->codec->bit_rate;551 track->bitrate = st->codecpar->bit_rate;
552 track->track_id = st->id;552 track->track_id = st->id;
553 track->timescale = st->time_base.den;553 track->timescale = st->time_base.den;
554 track->duration = st->duration;554 track->duration = st->duration;
555 track->is_audio = st->codec->codec_type == AVMEDIA_TYPE_AUDIO;555 track->is_audio = st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
556 track->is_video = st->codec->codec_type == AVMEDIA_TYPE_VIDEO;556 track->is_video = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO;
557 557
558 if (!track->is_audio && !track->is_video) {558 if (!track->is_audio && !track->is_video) {
559 fprintf(stderr,559 fprintf(stderr,
@@ -571,30 +571,30 @@ static int handle_file(struct Tracks *tracks, const char *file, int split, · 11 unmodified lines
571 if (tracks->audio_track < 0)571 if (tracks->audio_track < 0)
572 tracks->audio_track = tracks->nb_tracks;572 tracks->audio_track = tracks->nb_tracks;
573 tracks->nb_audio_tracks++;573 tracks->nb_audio_tracks++;
574 track->channels = st->codec->channels;574 track->channels = st->codecpar->channels;
575 track->sample_rate = st->codec->sample_rate;575 track->sample_rate = st->codecpar->sample_rate;
576 if (st->codec->codec_id == AV_CODEC_ID_AAC) {576 if (st->codecpar->codec_id == AV_CODEC_ID_AAC) {
577 track->fourcc = "AACL";577 track->fourcc = "AACL";
578 track->tag = 255;578 track->tag = 255;
579 track->blocksize = 4;579 track->blocksize = 4;
580 } else if (st->codec->codec_id == AV_CODEC_ID_WMAPRO) {580 } else if (st->codecpar->codec_id == AV_CODEC_ID_WMAPRO) {
581 track->fourcc = "WMAP";581 track->fourcc = "WMAP";
582 track->tag = st->codec->codec_tag;582 track->tag = st->codecpar->codec_tag;
583 track->blocksize = st->codec->block_align;583 track->blocksize = st->codecpar->block_align;
584 }584 }
585 get_private_data(track, st->codec);585 get_private_data(track, st->codecpar);
586 }586 }
587 if (track->is_video) {587 if (track->is_video) {
588 if (tracks->video_track < 0)588 if (tracks->video_track < 0)
589 tracks->video_track = tracks->nb_tracks;589 tracks->video_track = tracks->nb_tracks;
590 tracks->nb_video_tracks++;590 tracks->nb_video_tracks++;
591 track->width = st->codec->width;591 track->width = st->codecpar->width;
592 track->height = st->codec->height;592 track->height = st->codecpar->height;
593 if (st->codec->codec_id == AV_CODEC_ID_H264)593 if (st->codecpar->codec_id == AV_CODEC_ID_H264)
594 track->fourcc = "H264";594 track->fourcc = "H264";
595 else if (st->codec->codec_id == AV_CODEC_ID_VC1)595 else if (st->codecpar->codec_id == AV_CODEC_ID_VC1)
596 track->fourcc = "WVC1";596 track->fourcc = "WVC1";
597 get_video_private_data(track, st->codec);597 get_video_private_data(track, st->codecpar);
598 }598 }
599 599
600 tracks->nb_tracks++;600 tracks->nb_tracks++;
tools/sidxindex.c+17−16
@@ -52,22 +52,23 @@ struct Tracks { · 51 unmodified lines
52 int multiple_tracks_per_file;52 int multiple_tracks_per_file;
53};53};
54 54
55static void set_codec_str(AVCodecContext *codec, char *str, int size)55static void set_codec_str(AVCodecParameters *codecpar, char *str, int size)
56{56{
57 switch (codec->codec_id) {57 switch (codecpar->codec_id) {
58 case AV_CODEC_ID_H264:58 case AV_CODEC_ID_H264:
59 snprintf(str, size, "avc1");59 snprintf(str, size, "avc1");
60 if (codec->extradata_size >= 4 && codec->extradata[0] == 1) {60 if (codecpar->extradata_size >= 4 && codecpar->extradata[0] == 1) {
61 av_strlcatf(str, size, ".%02x%02x%02x",61 av_strlcatf(str, size, ".%02x%02x%02x",
62 codec->extradata[1], codec->extradata[2], codec->extradata[3]);62 codecpar->extradata[1], codecpar->extradata[2],
63 codecpar->extradata[3]);
63 }64 }
64 break;65 break;
65 case AV_CODEC_ID_AAC:66 case AV_CODEC_ID_AAC:
66 snprintf(str, size, "mp4a.40"); // 0x40 is the mp4 object type for AAC67 snprintf(str, size, "mp4a.40"); // 0x40 is the mp4 object type for AAC
67 if (codec->extradata_size >= 2) {68 if (codecpar->extradata_size >= 2) {
68 int aot = codec->extradata[0] >> 3;69 int aot = codecpar->extradata[0] >> 3;
69 if (aot == 31)70 if (aot == 31)
70 aot = ((AV_RB16(codec->extradata) >> 5) & 0x3f) + 32;71 aot = ((AV_RB16(codecpar->extradata) >> 5) & 0x3f) + 32;
71 av_strlcatf(str, size, ".%d", aot);72 av_strlcatf(str, size, ".%d", aot);
72 }73 }
73 break;74 break;
@@ -145,7 +146,7 @@ static int handle_file(struct Tracks *tracks, const char *file) · 71 unmodified lines
145 struct Track **temp;146 struct Track **temp;
146 AVStream *st = ctx->streams[i];147 AVStream *st = ctx->streams[i];
147 148
148 if (st->codec->bit_rate == 0) {149 if (st->codecpar->bit_rate == 0) {
149 fprintf(stderr, "Skipping track %d in %s as it has zero bitrate\n",150 fprintf(stderr, "Skipping track %d in %s as it has zero bitrate\n",
150 st->id, file);151 st->id, file);
151 continue;152 continue;
@@ -170,12 +171,12 @@ static int handle_file(struct Tracks *tracks, const char *file) · 18 unmodified lines
170 if ((ptr = strrchr(file, '/')))171 if ((ptr = strrchr(file, '/')))
171 track->name = ptr + 1;172 track->name = ptr + 1;
172 173
173 track->bitrate = st->codec->bit_rate;174 track->bitrate = st->codecpar->bit_rate;
174 track->track_id = st->id;175 track->track_id = st->id;
175 track->timescale = st->time_base.den;176 track->timescale = st->time_base.den;
176 track->duration = st->duration;177 track->duration = st->duration;
177 track->is_audio = st->codec->codec_type == AVMEDIA_TYPE_AUDIO;178 track->is_audio = st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
178 track->is_video = st->codec->codec_type == AVMEDIA_TYPE_VIDEO;179 track->is_video = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO;
179 180
180 if (!track->is_audio && !track->is_video) {181 if (!track->is_audio && !track->is_video) {
181 fprintf(stderr,182 fprintf(stderr,
@@ -190,14 +191,14 @@ static int handle_file(struct Tracks *tracks, const char *file) · 8 unmodified lines
190 track->timescale, AV_ROUND_UP));191 track->timescale, AV_ROUND_UP));
191 192
192 if (track->is_audio) {193 if (track->is_audio) {
193 track->channels = st->codec->channels;194 track->channels = st->codecpar->channels;
194 track->sample_rate = st->codec->sample_rate;195 track->sample_rate = st->codecpar->sample_rate;
195 }196 }
196 if (track->is_video) {197 if (track->is_video) {
197 track->width = st->codec->width;198 track->width = st->codecpar->width;
198 track->height = st->codec->height;199 track->height = st->codecpar->height;
199 }200 }
200 set_codec_str(st->codec, track->codec_str, sizeof(track->codec_str));201 set_codec_str(st->codecpar, track->codec_str, sizeof(track->codec_str));
201 202
202 tracks->nb_tracks++;203 tracks->nb_tracks++;
203 }204 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t