Hi all,
here are 2 patches for the QCELP decoder to start integrating
my code with the SoC repository.
Kenan
Index: qcelp_glue.diff
===================================================================
--- qcelp_glue.diff (revision 3828)
+++ qcelp_glue.diff (working copy)
@@ -1,52 +1,55 @@
Index: libavcodec/Makefile
===================================================================
---- libavcodec/Makefile (revision 13648)
+--- libavcodec/Makefile (revision 15816)
+++ libavcodec/Makefile (working copy)
-@@ -147,6 +147,7 @@
+@@ -155,6 +155,7 @@
OBJS-$(CONFIG_PNG_ENCODER) += png.o pngenc.o
OBJS-$(CONFIG_PPM_ENCODER) += pnmenc.o pnm.o
OBJS-$(CONFIG_PTX_DECODER) += ptx.o
+OBJS-$(CONFIG_QCELP_DECODER) += qcelpdec.o
- OBJS-$(CONFIG_QDM2_DECODER) += qdm2.o mdct.o fft.o mpegaudiodec.o
mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o
+ OBJS-$(CONFIG_QDM2_DECODER) += qdm2.o mpegaudiodec.o
mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o
OBJS-$(CONFIG_QDRAW_DECODER) += qdrw.o
OBJS-$(CONFIG_QPEG_DECODER) += qpeg.o
-@@ -350,6 +351,7 @@
+@@ -362,6 +363,7 @@
OBJS-$(CONFIG_MPEGAUDIO_PARSER) += mpegaudio_parser.o
mpegaudiodecheader.o mpegaudiodata.o
OBJS-$(CONFIG_MPEGVIDEO_PARSER) += mpegvideo_parser.o mpeg12.o
mpeg12data.o mpegvideo.o error_resilience.o
OBJS-$(CONFIG_PNM_PARSER) += pnm_parser.o pnm.o
+OBJS-$(CONFIG_QCELP_PARSER) += qcelp_parser.o
OBJS-$(CONFIG_VC1_PARSER) += vc1_parser.o
+ OBJS-$(CONFIG_VP3_PARSER) += vp3_parser.o
- OBJS-$(CONFIG_DUMP_EXTRADATA_BSF) += dump_extradata_bsf.o
Index: libavcodec/allcodecs.c
===================================================================
---- libavcodec/allcodecs.c (revision 13648)
+--- libavcodec/allcodecs.c (revision 15816)
+++ libavcodec/allcodecs.c (working copy)
-@@ -196,6 +196,7 @@
+@@ -203,6 +203,7 @@
REGISTER_DECODER (MPC7, mpc7);
REGISTER_DECODER (MPC8, mpc8);
- REGISTER_DECODER (NELLYMOSER, nellymoser);
+ REGISTER_ENCDEC (NELLYMOSER, nellymoser);
+ REGISTER_DECODER (QCELP, qcelp);
REGISTER_DECODER (QDM2, qdm2);
REGISTER_DECODER (RA_144, ra_144);
REGISTER_DECODER (RA_288, ra_288);
-@@ -309,6 +310,7 @@
+@@ -318,6 +319,7 @@
REGISTER_PARSER (MPEGAUDIO, mpegaudio);
REGISTER_PARSER (MPEGVIDEO, mpegvideo);
REGISTER_PARSER (PNM, pnm);
+ REGISTER_PARSER (QCELP, qcelp);
REGISTER_PARSER (VC1, vc1);
+ REGISTER_PARSER (VP3, vp3);
- /* bitstream filters */
Index: libavformat/mov.c
===================================================================
---- libavformat/mov.c (revision 13648)
+--- libavformat/mov.c (revision 15816)
+++ libavformat/mov.c (working copy)
-@@ -945,6 +945,7 @@
- st->codec->channels= 1; /* really needed */
- break;
+@@ -987,6 +987,10 @@
+ #endif
+ /* no ifdef since parameters are always those */
case CODEC_ID_QCELP:
+ st->need_parsing = AVSTREAM_PARSE_FULL;
++ st->codec->frame_size= 160;
++ st->codec->channels= 1; /* really needed */
++ break;
case CODEC_ID_AMR_NB:
+ case CODEC_ID_AMR_WB:
st->codec->frame_size= sc->samples_per_frame;
- st->codec->sample_rate= 8000;
Index: qcelpdec.c
===================================================================
--- qcelpdec.c (revision 3828)
+++ qcelpdec.c (working copy)
@@ -58,18 +58,6 @@
static int qcelp_decode_init(AVCodecContext *avctx)
{
- if(avctx->sample_rate != 8000)
- av_log(avctx, AV_LOG_WARNING,
- "Unsupported samplerate %d, resampling.", avctx->sample_rate);
-
- if(avctx->channels != 1)
- av_log(avctx, AV_LOG_WARNING,
- "QCELP does not allow %d channels. Trying mono.\n",
- avctx->channels);
-
- avctx->sample_rate = 8000;
- avctx->channels = 1;
-
return 0;
}
Index: qcelpdata.h
===================================================================
--- qcelpdata.h (revision 3828)
+++ qcelpdata.h (working copy)
@@ -30,16 +30,16 @@
typedef enum
{
- RATE_FULL = 0,
- RATE_HALF = 1,
- RATE_QUARTER= 2,
- RATE_OCTAVE = 3,
- I_F_Q, /*!< insufficient frame quality */
+ RATE_UNKNOWN = -2,
+ I_F_Q, /*!< insufficient frame quality */
BLANK,
- RATE_UNKNOWN
+ RATE_OCTAVE,
+ RATE_QUARTER,
+ RATE_HALF,
+ RATE_FULL
} qcelp_packet_rate;
-static const uint16_t qcelp_bits_per_rate[]={266,124,54,20};
+static const uint16_t qcelp_bits_per_rate[]={0, 20, 54, 124, 266};
static const float qcelp_hammsinc_table[]={-0.006822, 0.041249,-0.143459,
0.588863, 0.588863,-0.143459,
0.041249,-0.006822};
_______________________________________________
FFmpeg-soc mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc