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

Reply via email to