---
Supporting either sample format for this particular encoder is trivial
and does not require additional processing in either case.

 libavcodec/mpegaudioenc.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/libavcodec/mpegaudioenc.c b/libavcodec/mpegaudioenc.c
index ab9e0fa..3549f0b 100644
--- a/libavcodec/mpegaudioenc.c
+++ b/libavcodec/mpegaudioenc.c
@@ -736,13 +736,17 @@ static int MPA_encode_frame(AVCodecContext *avctx, 
AVPacket *avpkt,
                             const AVFrame *frame, int *got_packet_ptr)
 {
     MpegAudioContext *s = avctx->priv_data;
-    const int16_t *samples = (const int16_t *)frame->data[0];
     short smr[MPA_MAX_CHANNELS][SBLIMIT];
     unsigned char bit_alloc[MPA_MAX_CHANNELS][SBLIMIT];
     int padding, i, ret;
 
-    for(i=0;i<s->nb_channels;i++) {
-        filter(s, i, samples + i, s->nb_channels);
+    if (avctx->sample_fmt == AV_SAMPLE_FMT_S16P) {
+        for (i = 0; i < s->nb_channels; i++)
+            filter(s, i, (const int16_t *)frame->data[i], 1);
+    } else {
+        const int16_t *samples = (const int16_t *)frame->data[0];
+        for (i = 0; i < s->nb_channels; i++)
+            filter(s, i, samples + i, s->nb_channels);
     }
 
     for(i=0;i<s->nb_channels;i++) {
@@ -792,7 +796,8 @@ AVCodec ff_mp2_encoder = {
     .init                  = MPA_encode_init,
     .encode2               = MPA_encode_frame,
     .close                 = MPA_encode_close,
-    .sample_fmts           = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16,
+    .sample_fmts           = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16P,
+                                                            AV_SAMPLE_FMT_S16,
                                                             AV_SAMPLE_FMT_NONE 
},
     .supported_samplerates = (const int[]){
         44100, 48000,  32000, 22050, 24000, 16000, 0
-- 
1.7.1

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to