[FFmpeg-devel] [PATCH]ffmpeg: Do not set too large bits_per_raw_sample

Michael Niedermayer michael at niedermayer.cc
Tue Jul 5 01:36:53 EEST 2016


On Sun, May 01, 2016 at 05:11:08PM +0200, Carl Eugen Hoyos wrote:
> Hi!
> 
> Attached patch stops setting bits_per_raw_sample if it makes no sense as for 
> example in the wmall24 -> pcm_s16 case:
>     Stream #0:0: Audio: pcm_s16le, 96000 Hz, stereo, s16 (24 bit), 3072 kb/s
> 
> Mostly tested with audio.
> 
> Please comment, Carl Eugen

>  ffmpeg.c |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 1a672d3fd9fe8e65d2ad9a4271fe5260a888e28a  patchrawsample.diff
> diff --git a/ffmpeg.c b/ffmpeg.c
> index adc3ff7..86bc518 100644
> --- a/ffmpeg.c
> +++ b/ffmpeg.c
> @@ -2859,7 +2859,6 @@ static int transcode_init(void)
>              dec_ctx = ist->dec_ctx;
>  
>              ost->st->disposition          = ist->st->disposition;
> -            enc_ctx->bits_per_raw_sample    = dec_ctx->bits_per_raw_sample;
>              enc_ctx->chroma_sample_location = dec_ctx->chroma_sample_location;
>          } else {
>              for (j=0; j<oc->nb_streams; j++) {
> @@ -3100,6 +3099,9 @@ static int transcode_init(void)
>              switch (enc_ctx->codec_type) {
>              case AVMEDIA_TYPE_AUDIO:
>                  enc_ctx->sample_fmt     = ost->filter->filter->inputs[0]->format;
> +                if (dec_ctx)
> +                    enc_ctx->bits_per_raw_sample = FFMIN(dec_ctx->bits_per_raw_sample,
> +                                                         av_get_bytes_per_sample(enc_ctx->sample_fmt) << 3);
>                  enc_ctx->sample_rate    = ost->filter->filter->inputs[0]->sample_rate;
>                  enc_ctx->channel_layout = ost->filter->filter->inputs[0]->channel_layout;
>                  enc_ctx->channels       = avfilter_link_get_channels(ost->filter->filter->inputs[0]);
> @@ -3140,6 +3142,9 @@ static int transcode_init(void)
>                             "Use -pix_fmt yuv420p for compatibility with outdated media players.\n",
>                             av_get_pix_fmt_name(ost->filter->filter->inputs[0]->format));
>                  enc_ctx->pix_fmt = ost->filter->filter->inputs[0]->format;
> +                if (dec_ctx)
> +                    enc_ctx->bits_per_raw_sample = FFMIN(dec_ctx->bits_per_raw_sample,
> +                                                         av_pix_fmt_desc_get(enc_ctx->pix_fmt)->comp[0].depth);

these 2 are missing the stream copy case above


[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

If you drop bombs on a foreign country and kill a hundred thousand
innocent people, expect your government to call the consequence
"unprovoked inhuman terrorist attacks" and use it to justify dropping
more bombs and killing more people. The technology changed, the idea is old.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160705/faee41f1/attachment.sig>


More information about the ffmpeg-devel mailing list