[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec libgsm.c, NONE, 1.1 allcodecs.c, 1.105, 1.106 avcodec.h, 1.398, 1.399 Makefile, 1.190, 1.191
Michael Niedermayer CVS
michael
Mon May 23 01:39:13 CEST 2005
Update of /cvsroot/ffmpeg/ffmpeg/libavcodec
In directory mail:/var2/tmp/cvs-serv29252/libavcodec
Modified Files:
allcodecs.c avcodec.h Makefile
Added Files:
libgsm.c
Log Message:
libgsm warper by (Alban Bedel: albeu, free fr)
--- NEW FILE: libgsm.c ---
/*
* Interface to libgsm for gsm encoding/decoding
* Copyright (c) 2005 Alban Bedel <albeu at free.fr>
*
* This library 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 of the License, or (at your option) any later version.
*
* This library 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 this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* @file libgsm.c
* Interface to libgsm for gsm encoding/decoding
*/
#include "avcodec.h"
#include <gsm.h>
// gsm.h miss some essential constants
#define GSM_BLOCK_SIZE 33
#define GSM_FRAME_SIZE 160
static int libgsm_init(AVCodecContext *avctx) {
if (avctx->channels > 1 || avctx->sample_rate != 8000)
return -1;
avctx->frame_size = GSM_FRAME_SIZE;
avctx->block_align = GSM_BLOCK_SIZE;
avctx->priv_data = gsm_create();
avctx->coded_frame= avcodec_alloc_frame();
avctx->coded_frame->key_frame= 1;
return 0;
}
static int libgsm_close(AVCodecContext *avctx) {
gsm_destroy(avctx->priv_data);
avctx->priv_data = NULL;
return 0;
}
static int libgsm_encode_frame(AVCodecContext *avctx,
unsigned char *frame, int buf_size, void *data) {
// we need a full block
if(buf_size < GSM_BLOCK_SIZE) return 0;
gsm_encode(avctx->priv_data,data,frame);
return GSM_BLOCK_SIZE;
}
AVCodec libgsm_encoder = {
"gsm",
CODEC_TYPE_AUDIO,
CODEC_ID_GSM,
0,
libgsm_init,
libgsm_encode_frame,
libgsm_close,
};
static int libgsm_decode_frame(AVCodecContext *avctx,
void *data, int *data_size,
uint8_t *buf, int buf_size) {
if(buf_size < GSM_BLOCK_SIZE) return 0;
if(gsm_decode(avctx->priv_data,buf,data)) return -1;
*data_size = GSM_FRAME_SIZE*2;
return GSM_BLOCK_SIZE;
}
AVCodec libgsm_decoder = {
"gsm",
CODEC_TYPE_AUDIO,
CODEC_ID_GSM,
0,
libgsm_init,
NULL,
libgsm_close,
libgsm_decode_frame,
};
Index: allcodecs.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/allcodecs.c,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -d -r1.105 -r1.106
--- allcodecs.c 17 May 2005 22:47:34 -0000 1.105
+++ allcodecs.c 22 May 2005 23:39:11 -0000 1.106
@@ -186,6 +186,9 @@
register_avcodec(&x264_encoder);
#endif //CONFIG_X264_ENCODER
#endif
+#ifdef CONFIG_LIBGSM
+ register_avcodec(&libgsm_encoder);
+#endif //CONFIG_LIBGSM
#endif /* CONFIG_ENCODERS */
#ifdef CONFIG_RAWVIDEO_ENCODER
register_avcodec(&rawvideo_encoder);
@@ -482,6 +485,9 @@
#ifdef CONFIG_VORBIS_DECODER
register_avcodec(&vorbis_decoder);
#endif
+#ifdef CONFIG_LIBGSM
+ register_avcodec(&libgsm_decoder);
+#endif //CONFIG_LIBGSM
#endif /* CONFIG_DECODERS */
#ifdef AMR_NB
Index: avcodec.h
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/avcodec.h,v
retrieving revision 1.398
retrieving revision 1.399
diff -u -d -r1.398 -r1.399
--- avcodec.h 17 May 2005 22:47:34 -0000 1.398
+++ avcodec.h 22 May 2005 23:39:11 -0000 1.399
@@ -172,6 +172,7 @@
CODEC_ID_SHORTEN,
CODEC_ID_ALAC,
CODEC_ID_WESTWOOD_SND1,
+ CODEC_ID_GSM,
CODEC_ID_OGGTHEORA= 0x16000,
@@ -2021,6 +2022,8 @@
extern AVCodec indeo2_decoder;
extern AVCodec vorbis_decoder;
extern AVCodec fraps_decoder;
+extern AVCodec libgsm_encoder;
+extern AVCodec libgsm_decoder;
/* pcm codecs */
#define PCM_CODEC(id, name) \
Index: Makefile
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/Makefile,v
retrieving revision 1.190
retrieving revision 1.191
diff -u -d -r1.190 -r1.191
--- Makefile 19 May 2005 00:17:50 -0000 1.190
+++ Makefile 22 May 2005 23:39:11 -0000 1.191
@@ -291,6 +291,11 @@
EXTRALIBS += -logg
endif
+ifeq ($(CONFIG_LIBGSM),yes)
+OBJS += libgsm.o
+EXTRALIBS += -lgsm
+endif
+
ifeq ($(TARGET_GPROF),yes)
CFLAGS+=-p
LDFLAGS+=-p
More information about the ffmpeg-cvslog
mailing list