[FFmpeg-cvslog] r14800 - in trunk/libavcodec: g729.h g729dec.c

voroshil subversion
Sun Aug 17 10:43:37 CEST 2008


Author: voroshil
Date: Sun Aug 17 10:43:37 2008
New Revision: 14800

Log:
G.729 decoder main code
(just skeleton, contains only parts, explicitly ok'ed by Michael)


Added:
   trunk/libavcodec/g729.h   (contents, props changed)
   trunk/libavcodec/g729dec.c   (contents, props changed)

Added: trunk/libavcodec/g729.h
==============================================================================
--- (empty file)
+++ trunk/libavcodec/g729.h	Sun Aug 17 10:43:37 2008
@@ -0,0 +1,52 @@
+/*
+ * G.729 decoder
+ * Copyright (c) 2008 Vladimir Voroshilov
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+#ifndef FFMPEG_G729_H
+#define FFMPEG_G729_H
+
+#include <stdint.h>
+
+/// Moving Average (MA) prediction order
+#define MA_NP                      4
+
+/**
+ * minimum quantized LSF value (3.2.4)
+ * 0.005 in Q13
+ */
+#define LSFQ_MIN                   40
+
+/**
+ * maximum quantized LSF value (3.2.4)
+ * 3.135 in Q13
+ */
+#define LSFQ_MAX                   25681
+
+/**
+ * minimum LSF distance (3.2.4)
+ * 0.0391 in Q13
+ */
+#define LSFQ_DIFF_MIN              321
+
+/**
+ * maximum possible subframe size
+ */
+#define MAX_SUBFRAME_SIZE 44
+
+#endif // FFMPEG_G729_H

Added: trunk/libavcodec/g729dec.c
==============================================================================
--- (empty file)
+++ trunk/libavcodec/g729dec.c	Sun Aug 17 10:43:37 2008
@@ -0,0 +1,52 @@
+/*
+ * G.729 decoder
+ * Copyright (c) 2008 Vladimir Voroshilov
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+#include <stdlib.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <assert.h>
+
+#include "avcodec.h"
+#include "libavutil/avutil.h"
+#include "bitstream.h"
+
+/**
+ * \brief pseudo random number generator
+ */
+static inline uint16_t g729_random(uint16_t value)
+{
+    return 31821 * value + 13849;
+}
+
+AVCodec g729_decoder =
+{
+    "g729",
+    CODEC_TYPE_AUDIO,
+    CODEC_ID_G729,
+    sizeof(G729_Context),
+    ff_g729_decoder_init,
+    NULL,
+    NULL,
+    ff_g729_decode_frame,
+    .long_name = NULL_IF_CONFIG_SMALL("G.729"),
+};




More information about the ffmpeg-cvslog mailing list