[FFmpeg-cvslog] tools: Port to codec parameters API
Diego Biurrun
git at videolan.org
Thu Jun 23 12:18:21 CEST 2016
ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Wed May 11 15:26:02 2016 +0200| [b8de14bcdf876c7e236a6dd2ad35342ff4b42cf8] | committer: Diego Biurrun
tools: Port to codec parameters API
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b8de14bcdf876c7e236a6dd2ad35342ff4b42cf8
---
tools/ismindex.c | 60 ++++++++++++++++++++++++++---------------------------
tools/sidxindex.c | 33 +++++++++++++++--------------
2 files changed, 47 insertions(+), 46 deletions(-)
diff --git a/tools/ismindex.c b/tools/ismindex.c
index 71bb36b..3d7e082 100644
--- a/tools/ismindex.c
+++ b/tools/ismindex.c
@@ -450,40 +450,40 @@ fail:
return err;
}
-static int get_private_data(struct Track *track, AVCodecContext *codec)
+static int get_private_data(struct Track *track, AVCodecParameters *codecpar)
{
- track->codec_private_size = codec->extradata_size;
- track->codec_private = av_mallocz(codec->extradata_size);
+ track->codec_private_size = codecpar->extradata_size;
+ track->codec_private = av_mallocz(codecpar->extradata_size);
if (!track->codec_private)
return AVERROR(ENOMEM);
- memcpy(track->codec_private, codec->extradata, codec->extradata_size);
+ memcpy(track->codec_private, codecpar->extradata, codecpar->extradata_size);
return 0;
}
-static int get_video_private_data(struct Track *track, AVCodecContext *codec)
+static int get_video_private_data(struct Track *track, AVCodecParameters *codecpar)
{
AVIOContext *io = NULL;
uint16_t sps_size, pps_size;
int err;
- if (codec->codec_id == AV_CODEC_ID_VC1)
- return get_private_data(track, codec);
+ if (codecpar->codec_id == AV_CODEC_ID_VC1)
+ return get_private_data(track, codecpar);
if ((err = avio_open_dyn_buf(&io)) < 0)
goto fail;
err = AVERROR(EINVAL);
- if (codec->extradata_size < 11 || codec->extradata[0] != 1)
+ if (codecpar->extradata_size < 11 || codecpar->extradata[0] != 1)
goto fail;
- sps_size = AV_RB16(&codec->extradata[6]);
- if (11 + sps_size > codec->extradata_size)
+ sps_size = AV_RB16(&codecpar->extradata[6]);
+ if (11 + sps_size > codecpar->extradata_size)
goto fail;
avio_wb32(io, 0x00000001);
- avio_write(io, &codec->extradata[8], sps_size);
- pps_size = AV_RB16(&codec->extradata[9 + sps_size]);
- if (11 + sps_size + pps_size > codec->extradata_size)
+ avio_write(io, &codecpar->extradata[8], sps_size);
+ pps_size = AV_RB16(&codecpar->extradata[9 + sps_size]);
+ if (11 + sps_size + pps_size > codecpar->extradata_size)
goto fail;
avio_wb32(io, 0x00000001);
- avio_write(io, &codec->extradata[11 + sps_size], pps_size);
+ avio_write(io, &codecpar->extradata[11 + sps_size], pps_size);
err = 0;
fail:
@@ -523,7 +523,7 @@ static int handle_file(struct Tracks *tracks, const char *file, int split,
struct Track **temp;
AVStream *st = ctx->streams[i];
- if (st->codec->bit_rate == 0) {
+ if (st->codecpar->bit_rate == 0) {
fprintf(stderr, "Skipping track %d in %s as it has zero bitrate\n",
st->id, file);
continue;
@@ -548,12 +548,12 @@ static int handle_file(struct Tracks *tracks, const char *file, int split,
if ((ptr = strrchr(file, '/')))
track->name = ptr + 1;
- track->bitrate = st->codec->bit_rate;
+ track->bitrate = st->codecpar->bit_rate;
track->track_id = st->id;
track->timescale = st->time_base.den;
track->duration = st->duration;
- track->is_audio = st->codec->codec_type == AVMEDIA_TYPE_AUDIO;
- track->is_video = st->codec->codec_type == AVMEDIA_TYPE_VIDEO;
+ track->is_audio = st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
+ track->is_video = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO;
if (!track->is_audio && !track->is_video) {
fprintf(stderr,
@@ -571,30 +571,30 @@ static int handle_file(struct Tracks *tracks, const char *file, int split,
if (tracks->audio_track < 0)
tracks->audio_track = tracks->nb_tracks;
tracks->nb_audio_tracks++;
- track->channels = st->codec->channels;
- track->sample_rate = st->codec->sample_rate;
- if (st->codec->codec_id == AV_CODEC_ID_AAC) {
+ track->channels = st->codecpar->channels;
+ track->sample_rate = st->codecpar->sample_rate;
+ if (st->codecpar->codec_id == AV_CODEC_ID_AAC) {
track->fourcc = "AACL";
track->tag = 255;
track->blocksize = 4;
- } else if (st->codec->codec_id == AV_CODEC_ID_WMAPRO) {
+ } else if (st->codecpar->codec_id == AV_CODEC_ID_WMAPRO) {
track->fourcc = "WMAP";
- track->tag = st->codec->codec_tag;
- track->blocksize = st->codec->block_align;
+ track->tag = st->codecpar->codec_tag;
+ track->blocksize = st->codecpar->block_align;
}
- get_private_data(track, st->codec);
+ get_private_data(track, st->codecpar);
}
if (track->is_video) {
if (tracks->video_track < 0)
tracks->video_track = tracks->nb_tracks;
tracks->nb_video_tracks++;
- track->width = st->codec->width;
- track->height = st->codec->height;
- if (st->codec->codec_id == AV_CODEC_ID_H264)
+ track->width = st->codecpar->width;
+ track->height = st->codecpar->height;
+ if (st->codecpar->codec_id == AV_CODEC_ID_H264)
track->fourcc = "H264";
- else if (st->codec->codec_id == AV_CODEC_ID_VC1)
+ else if (st->codecpar->codec_id == AV_CODEC_ID_VC1)
track->fourcc = "WVC1";
- get_video_private_data(track, st->codec);
+ get_video_private_data(track, st->codecpar);
}
tracks->nb_tracks++;
diff --git a/tools/sidxindex.c b/tools/sidxindex.c
index 3adbc6f..e740a94 100644
--- a/tools/sidxindex.c
+++ b/tools/sidxindex.c
@@ -52,22 +52,23 @@ struct Tracks {
int multiple_tracks_per_file;
};
-static void set_codec_str(AVCodecContext *codec, char *str, int size)
+static void set_codec_str(AVCodecParameters *codecpar, char *str, int size)
{
- switch (codec->codec_id) {
+ switch (codecpar->codec_id) {
case AV_CODEC_ID_H264:
snprintf(str, size, "avc1");
- if (codec->extradata_size >= 4 && codec->extradata[0] == 1) {
+ if (codecpar->extradata_size >= 4 && codecpar->extradata[0] == 1) {
av_strlcatf(str, size, ".%02x%02x%02x",
- codec->extradata[1], codec->extradata[2], codec->extradata[3]);
+ codecpar->extradata[1], codecpar->extradata[2],
+ codecpar->extradata[3]);
}
break;
case AV_CODEC_ID_AAC:
snprintf(str, size, "mp4a.40"); // 0x40 is the mp4 object type for AAC
- if (codec->extradata_size >= 2) {
- int aot = codec->extradata[0] >> 3;
+ if (codecpar->extradata_size >= 2) {
+ int aot = codecpar->extradata[0] >> 3;
if (aot == 31)
- aot = ((AV_RB16(codec->extradata) >> 5) & 0x3f) + 32;
+ aot = ((AV_RB16(codecpar->extradata) >> 5) & 0x3f) + 32;
av_strlcatf(str, size, ".%d", aot);
}
break;
@@ -145,7 +146,7 @@ static int handle_file(struct Tracks *tracks, const char *file)
struct Track **temp;
AVStream *st = ctx->streams[i];
- if (st->codec->bit_rate == 0) {
+ if (st->codecpar->bit_rate == 0) {
fprintf(stderr, "Skipping track %d in %s as it has zero bitrate\n",
st->id, file);
continue;
@@ -170,12 +171,12 @@ static int handle_file(struct Tracks *tracks, const char *file)
if ((ptr = strrchr(file, '/')))
track->name = ptr + 1;
- track->bitrate = st->codec->bit_rate;
+ track->bitrate = st->codecpar->bit_rate;
track->track_id = st->id;
track->timescale = st->time_base.den;
track->duration = st->duration;
- track->is_audio = st->codec->codec_type == AVMEDIA_TYPE_AUDIO;
- track->is_video = st->codec->codec_type == AVMEDIA_TYPE_VIDEO;
+ track->is_audio = st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
+ track->is_video = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO;
if (!track->is_audio && !track->is_video) {
fprintf(stderr,
@@ -190,14 +191,14 @@ static int handle_file(struct Tracks *tracks, const char *file)
track->timescale, AV_ROUND_UP));
if (track->is_audio) {
- track->channels = st->codec->channels;
- track->sample_rate = st->codec->sample_rate;
+ track->channels = st->codecpar->channels;
+ track->sample_rate = st->codecpar->sample_rate;
}
if (track->is_video) {
- track->width = st->codec->width;
- track->height = st->codec->height;
+ track->width = st->codecpar->width;
+ track->height = st->codecpar->height;
}
- set_codec_str(st->codec, track->codec_str, sizeof(track->codec_str));
+ set_codec_str(st->codecpar, track->codec_str, sizeof(track->codec_str));
tracks->nb_tracks++;
}
More information about the ffmpeg-cvslog
mailing list