Hi! Attached is a new patch that should be ready to be applied no matter if we drop compatibility or not.
Please comment (quickly if possible), Carl Eugen
diff --git a/doc/APIchanges b/doc/APIchanges index 958035c..415463a 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,10 @@ libavutil: 2015-08-28 API changes, most recent first: +2015-xx-xx - + bit_rate/rc_max_rate/rc_min_rate where changed to 64bit, make sure you update + any printf() or other type sensitive code + 2015-xx-xx - lavu 55.0.100 / lavu 55.0.0 xxxxxxx - Change type of AVPixFmtDescriptor.flags from uint8_t to uint64_t. xxxxxxx - Change type of AVComponentDescriptor fields from uint16_t to int diff --git a/ffserver.c b/ffserver.c index 8b6e441..e031ec1 100644 --- a/ffserver.c +++ b/ffserver.c @@ -1789,7 +1789,7 @@ static inline void print_stream_params(AVIOContext *pb, FFServerStream *stream) avio_printf(pb, "<tr><td align=right>%d<td>%s<td align=right>%d" "<td>%s<td>%s\n", - i, type, st->codec->bit_rate/1000, + i, type, (int64_t)st->codec->bit_rate/1000, codec ? codec->name : "", parameters); } diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index a5faff5..545f8f4 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1530,7 +1530,11 @@ typedef struct AVCodecContext { * - decoding: Set by user, may be overwritten by libavcodec * if this info is available in the stream */ +#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI int bit_rate; +#else + int64_t bit_rate; +#endif /** * number of bits the bitstream is allowed to diverge from the reference. @@ -2461,14 +2465,22 @@ typedef struct AVCodecContext { * - encoding: Set by user. * - decoding: Set by user, may be overwritten by libavcodec. */ +#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI int rc_max_rate; +#else + int64_t rc_max_rate; +#endif /** * minimum bitrate * - encoding: Set by user. * - decoding: unused */ +#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI int rc_min_rate; +#else + int64_t rc_min_rate; +#endif #if FF_API_MPV_OPT /** diff --git a/libavcodec/dcaenc.c b/libavcodec/dcaenc.c index 23587a7..79da8f4 100644 --- a/libavcodec/dcaenc.c +++ b/libavcodec/dcaenc.c @@ -145,7 +145,7 @@ static int encode_init(AVCodecContext *avctx) c->samplerate_index = i; if (avctx->bit_rate < 32000 || avctx->bit_rate > 3840000) { - av_log(avctx, AV_LOG_ERROR, "Bit rate %i not supported.", avctx->bit_rate); + av_log(avctx, AV_LOG_ERROR, "Bit rate %"PRId64" not supported.", (int64_t)avctx->bit_rate); return AVERROR(EINVAL); } for (i = 0; ff_dca_bit_rates[i] < avctx->bit_rate; i++) diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index 5df0c90..98a817b 100644 --- a/libavcodec/libfdk-aacenc.c +++ b/libavcodec/libfdk-aacenc.c @@ -215,8 +215,8 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) } if ((err = aacEncoder_SetParam(s->handle, AACENC_BITRATE, avctx->bit_rate)) != AACENC_OK) { - av_log(avctx, AV_LOG_ERROR, "Unable to set the bitrate %d: %s\n", - avctx->bit_rate, aac_get_error(err)); + av_log(avctx, AV_LOG_ERROR, "Unable to set the bitrate %"PRId64": %s\n", + (int64_t)avctx->bit_rate, aac_get_error(err)); goto error; } } diff --git a/libavcodec/libgsmenc.c b/libavcodec/libgsmenc.c index 45fdb8e..69ce439 100644 --- a/libavcodec/libgsmenc.c +++ b/libavcodec/libgsmenc.c @@ -62,8 +62,8 @@ static av_cold int libgsm_encode_init(AVCodecContext *avctx) { if (avctx->bit_rate != 13000 /* Official */ && avctx->bit_rate != 13200 /* Very common */ && avctx->bit_rate != 0 /* Unknown; a.o. mov does not set bitrate when decoding */ ) { - av_log(avctx, AV_LOG_ERROR, "Bitrate 13000bps required for GSM, got %dbps\n", - avctx->bit_rate); + av_log(avctx, AV_LOG_ERROR, "Bitrate 13000bps required for GSM, got %"PRId64"bps\n", + (int64_t)avctx->bit_rate); if (avctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) return -1; } diff --git a/libavcodec/libopusenc.c b/libavcodec/libopusenc.c index a170b71..8ac02f9 100644 --- a/libavcodec/libopusenc.c +++ b/libavcodec/libopusenc.c @@ -180,12 +180,12 @@ static av_cold int libopus_encode_init(AVCodecContext *avctx) avctx->bit_rate = 64000 * opus->stream_count + 32000 * coupled_stream_count; av_log(avctx, AV_LOG_WARNING, - "No bit rate set. Defaulting to %d bps.\n", avctx->bit_rate); + "No bit rate set. Defaulting to %"PRId64" bps.\n", (int64_t)avctx->bit_rate); } if (avctx->bit_rate < 500 || avctx->bit_rate > 256000 * avctx->channels) { - av_log(avctx, AV_LOG_ERROR, "The bit rate %d bps is unsupported. " - "Please choose a value between 500 and %d.\n", avctx->bit_rate, + av_log(avctx, AV_LOG_ERROR, "The bit rate %"PRId64" bps is unsupported. " + "Please choose a value between 500 and %d.\n", (int64_t)avctx->bit_rate, 256000 * avctx->channels); return AVERROR(EINVAL); } diff --git a/libavcodec/libspeexenc.c b/libavcodec/libspeexenc.c index fbc1738..65a84dc 100644 --- a/libavcodec/libspeexenc.c +++ b/libavcodec/libspeexenc.c @@ -125,10 +125,10 @@ static av_cold void print_enc_params(AVCodecContext *avctx, av_log(avctx, AV_LOG_DEBUG, " quality: %f\n", s->vbr_quality); } else if (s->abr) { av_log(avctx, AV_LOG_DEBUG, "rate control: ABR\n"); - av_log(avctx, AV_LOG_DEBUG, " bitrate: %d bps\n", avctx->bit_rate); + av_log(avctx, AV_LOG_DEBUG, " bitrate: %"PRId64" bps\n", (int64_t)avctx->bit_rate); } else { av_log(avctx, AV_LOG_DEBUG, "rate control: CBR\n"); - av_log(avctx, AV_LOG_DEBUG, " bitrate: %d bps\n", avctx->bit_rate); + av_log(avctx, AV_LOG_DEBUG, " bitrate: %"PRId64" bps\n", (int64_t)avctx->bit_rate); } av_log(avctx, AV_LOG_DEBUG, "complexity: %d\n", avctx->compression_level); diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index b04fa39..b84eba1 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -486,7 +486,7 @@ FF_ENABLE_DEPRECATION_WARNINGS avctx->bit_rate * av_q2d(avctx->time_base) > avctx->bit_rate_tolerance) { av_log(avctx, AV_LOG_WARNING, - "bitrate tolerance %d too small for bitrate %d, overriding\n", avctx->bit_rate_tolerance, avctx->bit_rate); + "bitrate tolerance %d too small for bitrate %"PRId64", overriding\n", avctx->bit_rate_tolerance, (int64_t)avctx->bit_rate); avctx->bit_rate_tolerance = 5 * avctx->bit_rate * av_q2d(avctx->time_base); } diff --git a/libavcodec/pcm-bluray.c b/libavcodec/pcm-bluray.c index e7f9ee4..22c1c08 100644 --- a/libavcodec/pcm-bluray.c +++ b/libavcodec/pcm-bluray.c @@ -117,9 +117,9 @@ static int pcm_bluray_parse_header(AVCodecContext *avctx, if (avctx->debug & FF_DEBUG_PICT_INFO) ff_dlog(avctx, - "pcm_bluray_parse_header: %d channels, %d bits per sample, %d Hz, %d bit/s\n", + "pcm_bluray_parse_header: %d channels, %d bits per sample, %d Hz, %"PRId64" bit/s\n", avctx->channels, avctx->bits_per_coded_sample, - avctx->sample_rate, avctx->bit_rate); + avctx->sample_rate, (int64_t)avctx->bit_rate); return 0; } diff --git a/libavcodec/pcm-dvd.c b/libavcodec/pcm-dvd.c index 985a19b..a78c05d 100644 --- a/libavcodec/pcm-dvd.c +++ b/libavcodec/pcm-dvd.c @@ -140,9 +140,9 @@ static int pcm_dvd_parse_header(AVCodecContext *avctx, const uint8_t *header) if (avctx->debug & FF_DEBUG_PICT_INFO) ff_dlog(avctx, - "pcm_dvd_parse_header: %d channels, %d bits per sample, %d Hz, %d bit/s\n", + "pcm_dvd_parse_header: %d channels, %d bits per sample, %d Hz, %"PRId64" bit/s\n", avctx->channels, avctx->bits_per_coded_sample, - avctx->sample_rate, avctx->bit_rate); + avctx->sample_rate, (int64_t)avctx->bit_rate); s->last_header = header_int; diff --git a/libavcodec/sipr.c b/libavcodec/sipr.c index eb8b471..4602a42 100644 --- a/libavcodec/sipr.c +++ b/libavcodec/sipr.c @@ -493,8 +493,8 @@ static av_cold int sipr_decoder_init(AVCodecContext * avctx) else if (avctx->bit_rate > 5750 ) ctx->mode = MODE_6k5; else ctx->mode = MODE_5k0; av_log(avctx, AV_LOG_WARNING, - "Invalid block_align: %d. Mode %s guessed based on bitrate: %d\n", - avctx->block_align, modes[ctx->mode].mode_name, avctx->bit_rate); + "Invalid block_align: %d. Mode %s guessed based on bitrate: %"PRId64"\n", + avctx->block_align, modes[ctx->mode].mode_name, (int64_t)avctx->bit_rate); } av_log(avctx, AV_LOG_DEBUG, "Mode: %s\n", modes[ctx->mode].mode_name); diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 81bc215..f3dc922 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1450,7 +1450,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } if ( (avctx->codec_type == AVMEDIA_TYPE_VIDEO || avctx->codec_type == AVMEDIA_TYPE_AUDIO) && avctx->bit_rate>0 && avctx->bit_rate<1000) { - av_log(avctx, AV_LOG_WARNING, "Bitrate %d is extremely low, maybe you mean %dk\n", avctx->bit_rate, avctx->bit_rate); + av_log(avctx, AV_LOG_WARNING, "Bitrate %"PRId64" is extremely low, maybe you mean %"PRId64"k\n", avctx->bit_rate, (int64_t)avctx->bit_rate); } if (!avctx->rc_initial_buffer_occupancy) @@ -2827,7 +2827,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) ", %d kb/s", bitrate / 1000); } else if (enc->rc_max_rate > 0) { snprintf(buf + strlen(buf), buf_size - strlen(buf), - ", max. %d kb/s", enc->rc_max_rate / 1000); + ", max. %"PRId64" kb/s", (int64_t)enc->rc_max_rate / 1000); } } diff --git a/libavcodec/wma.c b/libavcodec/wma.c index 006d8d5..6a330c2 100644 --- a/libavcodec/wma.c +++ b/libavcodec/wma.c @@ -185,7 +185,7 @@ av_cold int ff_wma_init(AVCodecContext *avctx, int flags2) high_freq = high_freq * 0.5; } ff_dlog(s->avctx, "flags2=0x%x\n", flags2); - ff_dlog(s->avctx, "version=%d channels=%d sample_rate=%d bitrate=%d block_align=%d\n", + ff_dlog(s->avctx, "version=%d channels=%d sample_rate=%d bitrate=%"PRId64" block_align=%d\n", s->version, avctx->channels, avctx->sample_rate, avctx->bit_rate, avctx->block_align); ff_dlog(s->avctx, "bps=%f bps1=%f high_freq=%f bitoffset=%d\n", diff --git a/libavcodec/wmaenc.c b/libavcodec/wmaenc.c index fc23d4e..faf0cb5 100644 --- a/libavcodec/wmaenc.c +++ b/libavcodec/wmaenc.c @@ -50,8 +50,8 @@ static av_cold int encode_init(AVCodecContext *avctx) if (avctx->bit_rate < 24 * 1000) { av_log(avctx, AV_LOG_ERROR, - "bitrate too low: got %i, need 24000 or higher\n", - avctx->bit_rate); + "bitrate too low: got %"PRId64", need 24000 or higher\n", + (int64_t)avctx->bit_rate); return AVERROR(EINVAL); } diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 08d0c2a..af03d1e 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -3296,8 +3296,8 @@ static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov) } else { continue; } - avio_printf(pb, "<%s systemBitrate=\"%d\">\n", type, - track->enc->bit_rate); + avio_printf(pb, "<%s systemBitrate=\"%"PRId64"\">\n", type, + (int64_t)track->enc->bit_rate); param_write_int(pb, "systemBitrate", track->enc->bit_rate); param_write_int(pb, "trackID", track_id); if (track->enc->codec_type == AVMEDIA_TYPE_VIDEO) { diff --git a/libavformat/rdt.c b/libavformat/rdt.c index 046d273..79c0314 100644 --- a/libavformat/rdt.c +++ b/libavformat/rdt.c @@ -448,7 +448,7 @@ real_parse_asm_rule(AVStream *st, const char *p, const char *end) { do { /* can be either averagebandwidth= or AverageBandwidth= */ - if (sscanf(p, " %*1[Aa]verage%*1[Bb]andwidth=%d", &st->codec->bit_rate) == 1) + if (sscanf(p, " %*1[Aa]verage%*1[Bb]andwidth=%"SCNd64, (int64_t *)&st->codec->bit_rate) == 1) break; if (!(p = strchr(p, ',')) || p > end) p = end; diff --git a/libavformat/sdp.c b/libavformat/sdp.c index 45974b3..2ab37a8 100644 --- a/libavformat/sdp.c +++ b/libavformat/sdp.c @@ -740,7 +740,7 @@ void ff_sdp_write_media(char *buff, int size, AVStream *st, int idx, av_strlcatf(buff, size, "m=%s %d RTP/AVP %d\r\n", type, port, payload_type); sdp_write_address(buff, size, dest_addr, dest_type, ttl); if (c->bit_rate) { - av_strlcatf(buff, size, "b=AS:%d\r\n", c->bit_rate / 1000); + av_strlcatf(buff, size, "b=AS:%"PRId64"\r\n", (int64_t)c->bit_rate / 1000); } sdp_write_media_attributes(buff, size, c, payload_type, fmt); diff --git a/libavformat/smoothstreamingenc.c b/libavformat/smoothstreamingenc.c index 07173a9..1ae3b49 100644 --- a/libavformat/smoothstreamingenc.c +++ b/libavformat/smoothstreamingenc.c @@ -260,7 +260,7 @@ static int write_manifest(AVFormatContext *s, int final) if (s->streams[i]->codec->codec_type != AVMEDIA_TYPE_VIDEO) continue; last = i; - avio_printf(out, "<QualityLevel Index=\"%d\" Bitrate=\"%d\" FourCC=\"%s\" MaxWidth=\"%d\" MaxHeight=\"%d\" CodecPrivateData=\"%s\" />\n", index, s->streams[i]->codec->bit_rate, os->fourcc, s->streams[i]->codec->width, s->streams[i]->codec->height, os->private_str); + avio_printf(out, "<QualityLevel Index=\"%d\" Bitrate=\"%"PRId64"\" FourCC=\"%s\" MaxWidth=\"%d\" MaxHeight=\"%d\" CodecPrivateData=\"%s\" />\n", index, (int64_t)s->streams[i]->codec->bit_rate, os->fourcc, s->streams[i]->codec->width, s->streams[i]->codec->height, os->private_str); index++; } output_chunk_list(&c->streams[last], out, final, c->lookahead_count, c->window_size); @@ -274,7 +274,7 @@ static int write_manifest(AVFormatContext *s, int final) if (s->streams[i]->codec->codec_type != AVMEDIA_TYPE_AUDIO) continue; last = i; - avio_printf(out, "<QualityLevel Index=\"%d\" Bitrate=\"%d\" FourCC=\"%s\" SamplingRate=\"%d\" Channels=\"%d\" BitsPerSample=\"16\" PacketSize=\"%d\" AudioTag=\"%d\" CodecPrivateData=\"%s\" />\n", index, s->streams[i]->codec->bit_rate, os->fourcc, s->streams[i]->codec->sample_rate, s->streams[i]->codec->channels, os->packet_size, os->audio_tag, os->private_str); + avio_printf(out, "<QualityLevel Index=\"%d\" Bitrate=\"%"PRId64"\" FourCC=\"%s\" SamplingRate=\"%d\" Channels=\"%d\" BitsPerSample=\"16\" PacketSize=\"%d\" AudioTag=\"%d\" CodecPrivateData=\"%s\" />\n", index, (int64_t)s->streams[i]->codec->bit_rate, os->fourcc, s->streams[i]->codec->sample_rate, s->streams[i]->codec->channels, os->packet_size, os->audio_tag, os->private_str); index++; } output_chunk_list(&c->streams[last], out, final, c->lookahead_count, c->window_size); @@ -321,7 +321,7 @@ static int ism_write_header(AVFormatContext *s) ret = AVERROR(EINVAL); goto fail; } - snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%d)", s->filename, s->streams[i]->codec->bit_rate); + snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%"PRId64")", s->filename, (int64_t)s->streams[i]->codec->bit_rate); if (mkdir(os->dirname, 0777) == -1 && errno != EEXIST) { ret = AVERROR(errno); av_log(s, AV_LOG_ERROR, "mkdir failed\n"); diff --git a/libavformat/vqf.c b/libavformat/vqf.c index 29c726d..06363a9 100644 --- a/libavformat/vqf.c +++ b/libavformat/vqf.c @@ -211,8 +211,8 @@ static int vqf_read_header(AVFormatContext *s) size = 2048; break; default: - av_log(s, AV_LOG_ERROR, "Mode not suported: %d Hz, %d kb/s.\n", - st->codec->sample_rate, st->codec->bit_rate); + av_log(s, AV_LOG_ERROR, "Mode not suported: %d Hz, %"PRId64" kb/s.\n", + st->codec->sample_rate, (int64_t)st->codec->bit_rate); return -1; } c->frame_bit_len = st->codec->bit_rate*size/st->codec->sample_rate;
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel