On Sat, Oct 27, 2012 at 7:26 AM, Justin Ruggles
<[email protected]> wrote:
> ---
> libavcodec/flacenc.c | 88 +++++++++++++++++++++++++++++++++++--------------
> 1 files changed, 63 insertions(+), 25 deletions(-)
>
> diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c
> index 0ba9176..19413b3 100644
> --- a/libavcodec/flacenc.c
> +++ b/libavcodec/flacenc.c
> @@ -92,6 +92,7 @@ typedef struct FlacEncodeContext {
> int channels;
> int samplerate;
> int sr_code[2];
> + int bps_code;
> int max_blocksize;
> int min_framesize;
> int max_framesize;
> @@ -128,7 +129,7 @@ static void write_streaminfo(FlacEncodeContext *s,
> uint8_t *header)
> put_bits(&pb, 24, s->max_framesize);
> put_bits(&pb, 20, s->samplerate);
> put_bits(&pb, 3, s->channels-1);
> - put_bits(&pb, 5, 15); /* bits per sample - 1 */
> + put_bits(&pb, 5, s->avctx->bits_per_raw_sample - 1);
> /* write 36-bit sample count in 2 put_bits() calls */
> put_bits(&pb, 24, (s->sample_count & 0xFFFFFF000LL) >> 12);
> put_bits(&pb, 12, s->sample_count & 0x000000FFFLL);
> @@ -228,8 +229,18 @@ static av_cold int flac_encode_init(AVCodecContext
> *avctx)
>
> s->avctx = avctx;
>
> - if (avctx->sample_fmt != AV_SAMPLE_FMT_S16)
> - return -1;
> + switch (avctx->sample_fmt) {
> + case AV_SAMPLE_FMT_S16:
> + avctx->bits_per_raw_sample = 16;
> + s->bps_code = 4;
> + break;
> + case AV_SAMPLE_FMT_S32:
> + if (avctx->bits_per_raw_sample != 24)
> + av_log(avctx, AV_LOG_WARNING, "encoding as 24
> bits-per-sample\n");
> + avctx->bits_per_raw_sample = 24;
> + s->bps_code = 6;
> + break;
> + }
Doesn't this switch lack a default statement? Before it errored out on
everybad, but now the control flow continues.
--
regards,
Reinhard
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel