[FFmpeg-cvslog] paf: split audio and video decoder

Nidhi Makhijani git at videolan.org
Sun Jul 6 20:26:53 CEST 2014


ffmpeg | branch: master | Nidhi Makhijani <nidhimj22 at gmail.com> | Sun Jul  6 10:30:50 2014 +0530| [b0633f83f277c05bf1f617a99c7aedd2db8306e3] | committer: Diego Biurrun

paf: split audio and video decoder

Signed-off-by: Diego Biurrun <diego at biurrun.de>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b0633f83f277c05bf1f617a99c7aedd2db8306e3
---

 libavcodec/Makefile              |    4 +-
 libavcodec/pafaudio.c            |   84 ++++++++++++++++++++++++++++++++++++++
 libavcodec/{paf.c => pafvideo.c} |   66 +-----------------------------
 3 files changed, 87 insertions(+), 67 deletions(-)

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 13ce842..6779d9a 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -289,8 +289,8 @@ OBJS-$(CONFIG_ON2AVC_DECODER)          += on2avc.o on2avcdata.o
 OBJS-$(CONFIG_OPUS_DECODER)            += opusdec.o opus.o opus_celt.o \
                                           opus_imdct.o opus_silk.o     \
                                           vorbis_data.o
-OBJS-$(CONFIG_PAF_VIDEO_DECODER)       += paf.o
-OBJS-$(CONFIG_PAF_AUDIO_DECODER)       += paf.o
+OBJS-$(CONFIG_PAF_AUDIO_DECODER)       += pafaudio.o
+OBJS-$(CONFIG_PAF_VIDEO_DECODER)       += pafvideo.o
 OBJS-$(CONFIG_PAM_DECODER)             += pnmdec.o pnm.o
 OBJS-$(CONFIG_PAM_ENCODER)             += pamenc.o
 OBJS-$(CONFIG_PBM_DECODER)             += pnmdec.o pnm.o
diff --git a/libavcodec/pafaudio.c b/libavcodec/pafaudio.c
new file mode 100644
index 0000000..52aaabf
--- /dev/null
+++ b/libavcodec/pafaudio.c
@@ -0,0 +1,84 @@
+/*
+ * Packed Animation File audio decoder
+ * Copyright (c) 2012 Paul B Mahol
+ *
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libavutil/intreadwrite.h"
+
+#include "avcodec.h"
+#include "internal.h"
+#include "mathops.h"
+
+#define PAF_SOUND_SAMPLES     2205
+#define PAF_SOUND_FRAME_SIZE  ((256 + PAF_SOUND_SAMPLES) * 2)
+
+static av_cold int paf_audio_init(AVCodecContext *avctx)
+{
+    if (avctx->channels != 2) {
+        av_log(avctx, AV_LOG_ERROR, "invalid number of channels\n");
+        return AVERROR_INVALIDDATA;
+    }
+
+    avctx->channel_layout = AV_CH_LAYOUT_STEREO;
+    avctx->sample_fmt     = AV_SAMPLE_FMT_S16;
+
+    return 0;
+}
+
+static int paf_audio_decode(AVCodecContext *avctx, void *data,
+                            int *got_frame, AVPacket *pkt)
+{
+    AVFrame *frame = data;
+    int16_t *output_samples;
+    const uint8_t *src = pkt->data;
+    int frames, ret, i, j;
+    int16_t cb[256];
+
+    frames = pkt->size / PAF_SOUND_FRAME_SIZE;
+    if (frames < 1)
+        return AVERROR_INVALIDDATA;
+
+    frame->nb_samples = PAF_SOUND_SAMPLES * frames;
+    if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
+        return ret;
+
+    output_samples = (int16_t *)frame->data[0];
+    // codebook of 256 16-bit samples and 8-bit indices to it
+    for (j = 0; j < frames; j++) {
+        for (i = 0; i < 256; i++)
+            cb[i] = sign_extend(AV_RL16(src + i * 2), 16);
+        src += 256 * 2;
+        // always 2 channels
+        for (i = 0; i < PAF_SOUND_SAMPLES * 2; i++)
+            *output_samples++ = cb[*src++];
+    }
+    *got_frame = 1;
+
+    return pkt->size;
+}
+
+AVCodec ff_paf_audio_decoder = {
+    .name         = "paf_audio",
+    .long_name    = NULL_IF_CONFIG_SMALL("Amazing Studio Packed Animation File Audio"),
+    .type         = AVMEDIA_TYPE_AUDIO,
+    .id           = AV_CODEC_ID_PAF_AUDIO,
+    .init         = paf_audio_init,
+    .decode       = paf_audio_decode,
+    .capabilities = CODEC_CAP_DR1,
+};
diff --git a/libavcodec/paf.c b/libavcodec/pafvideo.c
similarity index 86%
rename from libavcodec/paf.c
rename to libavcodec/pafvideo.c
index 19be64e..650d036 100644
--- a/libavcodec/paf.c
+++ b/libavcodec/pafvideo.c
@@ -1,5 +1,5 @@
 /*
- * Packed Animation File video and audio decoder
+ * Packed Animation File video decoder
  * Copyright (c) 2012 Paul B Mahol
  *
  * This file is part of Libav.
@@ -20,16 +20,11 @@
  */
 
 #include "libavutil/imgutils.h"
-#include "libavutil/intreadwrite.h"
 
 #include "avcodec.h"
 #include "bytestream.h"
 #include "copy_block.h"
 #include "internal.h"
-#include "mathops.h"
-
-#define PAF_SOUND_SAMPLES     2205
-#define PAF_SOUND_FRAME_SIZE  ((256 + PAF_SOUND_SAMPLES) * 2)
 
 static const uint8_t block_sequences[16][8] = {
     { 0, 0, 0, 0, 0, 0, 0, 0 }, { 2, 0, 0, 0, 0, 0, 0, 0 },
@@ -378,52 +373,6 @@ static int paf_video_decode(AVCodecContext *avctx, void *data,
     return pkt->size;
 }
 
-static av_cold int paf_audio_init(AVCodecContext *avctx)
-{
-    if (avctx->channels != 2) {
-        av_log(avctx, AV_LOG_ERROR, "invalid number of channels\n");
-        return AVERROR_INVALIDDATA;
-    }
-
-    avctx->channel_layout = AV_CH_LAYOUT_STEREO;
-    avctx->sample_fmt     = AV_SAMPLE_FMT_S16;
-
-    return 0;
-}
-
-static int paf_audio_decode(AVCodecContext *avctx, void *data,
-                            int *got_frame, AVPacket *pkt)
-{
-    AVFrame *frame = data;
-    int16_t *output_samples;
-    const uint8_t *src = pkt->data;
-    int frames, ret, i, j;
-    int16_t cb[256];
-
-    frames = pkt->size / PAF_SOUND_FRAME_SIZE;
-    if (frames < 1)
-        return AVERROR_INVALIDDATA;
-
-    frame->nb_samples = PAF_SOUND_SAMPLES * frames;
-    if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
-        return ret;
-
-    output_samples = (int16_t *)frame->data[0];
-    // codebook of 256 16-bit samples and 8-bit indices to it
-    for (j = 0; j < frames; j++) {
-        for (i = 0; i < 256; i++)
-            cb[i] = sign_extend(AV_RL16(src + i * 2), 16);
-        src += 256 * 2;
-        // always 2 channels
-        for (i = 0; i < PAF_SOUND_SAMPLES * 2; i++)
-            *output_samples++ = cb[*src++];
-    }
-    *got_frame = 1;
-
-    return pkt->size;
-}
-
-#if CONFIG_PAF_VIDEO_DECODER
 AVCodec ff_paf_video_decoder = {
     .name           = "paf_video",
     .long_name      = NULL_IF_CONFIG_SMALL("Amazing Studio Packed Animation File Video"),
@@ -435,16 +384,3 @@ AVCodec ff_paf_video_decoder = {
     .decode         = paf_video_decode,
     .capabilities   = CODEC_CAP_DR1,
 };
-#endif
-
-#if CONFIG_PAF_AUDIO_DECODER
-AVCodec ff_paf_audio_decoder = {
-    .name         = "paf_audio",
-    .long_name    = NULL_IF_CONFIG_SMALL("Amazing Studio Packed Animation File Audio"),
-    .type         = AVMEDIA_TYPE_AUDIO,
-    .id           = AV_CODEC_ID_PAF_AUDIO,
-    .init         = paf_audio_init,
-    .decode       = paf_audio_decode,
-    .capabilities = CODEC_CAP_DR1,
-};
-#endif



More information about the ffmpeg-cvslog mailing list