From: Sergey Volk <serv...@chromium.org> Date: Wed, 9 Mar 2016 14:34:19 -0800 Subject: [PATCH] Change AVStream::id to int64_t in the next version bump
I have also bumped the major version to 58 locally in version.h, and re-ran make with the stream id being int64_t and fixed all new warnings that showed up (only saw new warnings related to the incorrect format being used for int64_t value). --- ffprobe.c | 8 +++++++- libavformat/avformat.h | 4 ++++ libavformat/concatdec.c | 8 ++++++-- libavformat/dump.c | 4 ++++ libavformat/mpegtsenc.c | 7 ++++++- libavformat/version.h | 3 +++ 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/ffprobe.c b/ffprobe.c index f7b51ad..21eab61 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -2287,7 +2287,13 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id } } - if (fmt_ctx->iformat->flags & AVFMT_SHOW_IDS) print_fmt ("id", "0x%x", stream->id); +#if FF_API_OLD_INT32_STREAM_ID +#define STREAM_ID_FORMAT "0x%x" +#else +#define STREAM_ID_FORMAT "0x%"PRIx64 +#endif + if (fmt_ctx->iformat->flags & AVFMT_SHOW_IDS) print_fmt ("id", STREAM_ID_FORMAT, stream->id); +#undef STREAM_ID_FORMAT else print_str_opt("id", "N/A"); print_q("r_frame_rate", stream->r_frame_rate, '/'); print_q("avg_frame_rate", stream->avg_frame_rate, '/'); diff --git a/libavformat/avformat.h b/libavformat/avformat.h index a558f2d..253b293 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -871,7 +871,11 @@ typedef struct AVStream { * decoding: set by libavformat * encoding: set by the user, replaced by libavformat if left unset */ +#if FF_API_OLD_INT32_STREAM_ID int id; +#else + int64_t id; +#endif /** * Codec context associated with this stream. Allocated and freed by * libavformat. diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index e69096f..481c8433 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -238,8 +238,12 @@ static int match_streams_exact_id(AVFormatContext *avf) for (j = 0; j < avf->nb_streams; j++) { if (avf->streams[j]->id == st->id) { av_log(avf, AV_LOG_VERBOSE, - "Match slave stream #%d with stream #%d id 0x%x\n", - i, j, st->id); +#if FF_API_OLD_INT32_STREAM_ID + "Match slave stream #%d with stream #%d id 0x%x\n" +#else + "Match slave stream #%d with stream #%d id 0x%"PRIx64"\n" +#endif + , i, j, st->id); if ((ret = copy_stream_props(avf->streams[j], st)) < 0) return ret; cat->cur_file->streams[i].out_stream_index = j; diff --git a/libavformat/dump.c b/libavformat/dump.c index 86bb82d..8b50ec1 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -453,7 +453,11 @@ static void dump_stream_format(AVFormatContext *ic, int i, /* the pid is an important information, so we display it */ /* XXX: add a generic system */ if (flags & AVFMT_SHOW_IDS) +#if FF_API_OLD_INT32_STREAM_ID av_log(NULL, AV_LOG_INFO, "[0x%x]", st->id); +#else + av_log(NULL, AV_LOG_INFO, "[0x%"PRIx64"]", st->id); +#endif if (lang) av_log(NULL, AV_LOG_INFO, "(%s)", lang->value); av_log(NULL, AV_LOG_DEBUG, ", %d, %d/%d", st->codec_info_nb_frames, diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 68f9867..0244b7f 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -833,7 +833,12 @@ static int mpegts_init(AVFormatContext *s) ts_st->pid = st->id; } else { av_log(s, AV_LOG_ERROR, - "Invalid stream id %d, must be less than 8191\n", st->id); +#if FF_API_OLD_INT32_STREAM_ID + "Invalid stream id %d, must be less than 8191\n", +#else + "Invalid stream id %"PRId64", must be less than 8191\n", +#endif + st->id); ret = AVERROR(EINVAL); goto fail; } diff --git a/libavformat/version.h b/libavformat/version.h index 7dcce2c..e0ac45a 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -74,6 +74,9 @@ #ifndef FF_API_OLD_OPEN_CALLBACKS #define FF_API_OLD_OPEN_CALLBACKS (LIBAVFORMAT_VERSION_MAJOR < 58) #endif +#ifndef FF_API_OLD_INT32_STREAM_ID +#define FF_API_OLD_INT32_STREAM_ID (LIBAVFORMAT_VERSION_MAJOR < 58) +#endif #ifndef FF_API_R_FRAME_RATE #define FF_API_R_FRAME_RATE 1 -- 2.7.0.rc3.207.g0ac5344 On Wed, Mar 9, 2016 at 3:55 PM, Sergey Volk <serv...@chromium.org> wrote: > Ok, so then I guess we'll need to update AVStream::id to be 64-bit > first, and then I'll make the necessary changes in matroskadec. > I've prepared a patch to bump AVStream::id to be int64_t in the next > major version, I'll send it out shortly. After I rebuilt ffmpeg > with AVStream::id being int64_t I got a couple of new warnings in the > code that was using 32-bit format specifiers for printing > stream ids, I've fixed those as well. I've also re-ran 'make fate' and > all the tests seem to be good. > > On Sat, Mar 5, 2016 at 2:47 AM, Michael Niedermayer > <mich...@niedermayer.cc> wrote: >> On Fri, Mar 04, 2016 at 04:19:18PM -0800, Sergey Volk wrote: >>> Ok, something like this for now, then? >> >> your original patch contained a nice commit message, this one >> doesnt >> >> >>> I'm new to ffmpeg development. When is the next version bump going to >>> happen? >> >> you can make changes at the next bump by using #if FF_API... >> see libavfilter/version.h >> >> >> [...] >> -- >> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB >> >> It is dangerous to be right in matters on which the established authorities >> are wrong. -- Voltaire >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel