annotate libgsm.c @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents b6cf19580e47
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
1 /*
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
2 * Interface to libgsm for gsm encoding/decoding
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
3 * Copyright (c) 2005 Alban Bedel <albeu@free.fr>
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
4 * Copyright (c) 2006, 2007 Michel Bardiaux <mbardiaux@mediaxim.be>
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
5 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3036
diff changeset
6 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3036
diff changeset
7 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3036
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3036
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
12 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3036
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
16 * Lesser General Public License for more details.
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
17 *
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3036
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 2967
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
21 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2729
diff changeset
22
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
23 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 11560
diff changeset
24 * @file
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
25 * Interface to libgsm for gsm encoding/decoding
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
26 */
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
27
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
28 // The idiosyncrasies of GSM-in-WAV are explained at http://kbs.cs.tu-berlin.de/~jutta/toast.html
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
29
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
30 #include "avcodec.h"
11138
76b57b8e2a9a Fix compilation with --enable-libgsm on Gentoo and OpenSUSE.
cehoyos
parents: 10145
diff changeset
31 #include <gsm/gsm.h>
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
32
5408
20bea6a9950c cosmetics: misc typo fixes
diego
parents: 5102
diff changeset
33 // gsm.h misses some essential constants
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
34 #define GSM_BLOCK_SIZE 33
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
35 #define GSM_MS_BLOCK_SIZE 65
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
36 #define GSM_FRAME_SIZE 160
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
37
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 5408
diff changeset
38 static av_cold int libgsm_init(AVCodecContext *avctx) {
6672
79984fdb1203 Allow bitrates zero and 13200 (needed for decoding mov and aiff)
mbardiaux
parents: 6517
diff changeset
39 if (avctx->channels > 1) {
79984fdb1203 Allow bitrates zero and 13200 (needed for decoding mov and aiff)
mbardiaux
parents: 6517
diff changeset
40 av_log(avctx, AV_LOG_ERROR, "Mono required for GSM, got %d channels\n",
79984fdb1203 Allow bitrates zero and 13200 (needed for decoding mov and aiff)
mbardiaux
parents: 6517
diff changeset
41 avctx->channels);
79984fdb1203 Allow bitrates zero and 13200 (needed for decoding mov and aiff)
mbardiaux
parents: 6517
diff changeset
42 return -1;
79984fdb1203 Allow bitrates zero and 13200 (needed for decoding mov and aiff)
mbardiaux
parents: 6517
diff changeset
43 }
6720
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
44
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
45 if(avctx->codec->decode){
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
46 if(!avctx->channels)
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
47 avctx->channels= 1;
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
48
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
49 if(!avctx->sample_rate)
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
50 avctx->sample_rate= 8000;
7451
85ab7655ad4d Modify all codecs to report their supported input and output sample format(s).
pross
parents: 7040
diff changeset
51
85ab7655ad4d Modify all codecs to report their supported input and output sample format(s).
pross
parents: 7040
diff changeset
52 avctx->sample_fmt = SAMPLE_FMT_S16;
6720
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
53 }else{
6721
michael
parents: 6720
diff changeset
54 if (avctx->sample_rate != 8000) {
michael
parents: 6720
diff changeset
55 av_log(avctx, AV_LOG_ERROR, "Sample rate 8000Hz required for GSM, got %dHz\n",
michael
parents: 6720
diff changeset
56 avctx->sample_rate);
12084
b6cf19580e47 Change all occurences of "inofficial" to "unofficial" in code, comments
cehoyos
parents: 11644
diff changeset
57 if(avctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL)
6721
michael
parents: 6720
diff changeset
58 return -1;
michael
parents: 6720
diff changeset
59 }
michael
parents: 6720
diff changeset
60 if (avctx->bit_rate != 13000 /* Official */ &&
michael
parents: 6720
diff changeset
61 avctx->bit_rate != 13200 /* Very common */ &&
michael
parents: 6720
diff changeset
62 avctx->bit_rate != 0 /* Unknown; a.o. mov does not set bitrate when decoding */ ) {
michael
parents: 6720
diff changeset
63 av_log(avctx, AV_LOG_ERROR, "Bitrate 13000bps required for GSM, got %dbps\n",
michael
parents: 6720
diff changeset
64 avctx->bit_rate);
12084
b6cf19580e47 Change all occurences of "inofficial" to "unofficial" in code, comments
cehoyos
parents: 11644
diff changeset
65 if(avctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL)
6721
michael
parents: 6720
diff changeset
66 return -1;
michael
parents: 6720
diff changeset
67 }
6720
2c540dc9ca2c Fix decoding of:
michael
parents: 6717
diff changeset
68 }
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
69
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
70 avctx->priv_data = gsm_create();
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
71
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
72 switch(avctx->codec_id) {
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
73 case CODEC_ID_GSM:
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
74 avctx->frame_size = GSM_FRAME_SIZE;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
75 avctx->block_align = GSM_BLOCK_SIZE;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
76 break;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
77 case CODEC_ID_GSM_MS: {
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
78 int one = 1;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
79 gsm_option(avctx->priv_data, GSM_OPT_WAV49, &one);
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
80 avctx->frame_size = 2*GSM_FRAME_SIZE;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
81 avctx->block_align = GSM_MS_BLOCK_SIZE;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
82 }
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
83 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2729
diff changeset
84
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
85 avctx->coded_frame= avcodec_alloc_frame();
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
86 avctx->coded_frame->key_frame= 1;
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2729
diff changeset
87
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
88 return 0;
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
89 }
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
90
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 5408
diff changeset
91 static av_cold int libgsm_close(AVCodecContext *avctx) {
8124
4070139042c7 Fix memory leak in libgsm wrapper.
andoma
parents: 7451
diff changeset
92 av_freep(&avctx->coded_frame);
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
93 gsm_destroy(avctx->priv_data);
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
94 avctx->priv_data = NULL;
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
95 return 0;
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
96 }
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
97
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
98 static int libgsm_encode_frame(AVCodecContext *avctx,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
99 unsigned char *frame, int buf_size, void *data) {
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
100 // we need a full block
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
101 if(buf_size < avctx->block_align) return 0;
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
102
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
103 switch(avctx->codec_id) {
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
104 case CODEC_ID_GSM:
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
105 gsm_encode(avctx->priv_data,data,frame);
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
106 break;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
107 case CODEC_ID_GSM_MS:
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
108 gsm_encode(avctx->priv_data,data,frame);
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
109 gsm_encode(avctx->priv_data,((short*)data)+GSM_FRAME_SIZE,frame+32);
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
110 }
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
111 return avctx->block_align;
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
112 }
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
113
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
114
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
115 AVCodec libgsm_encoder = {
5102
4323e587708d Give names of external library decoders/encoders a lib prefix
diego
parents: 4551
diff changeset
116 "libgsm",
11560
8a4984c5cacc Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 11138
diff changeset
117 AVMEDIA_TYPE_AUDIO,
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
118 CODEC_ID_GSM,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
119 0,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
120 libgsm_init,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
121 libgsm_encode_frame,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
122 libgsm_close,
10145
7955db355703 Make sample_fmts and channel_layouts compound literals const to reduce size of
reimar
parents: 9355
diff changeset
123 .sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
7040
e943e1409077 Make AVCodec long_names definition conditional depending on CONFIG_SMALL.
stefano
parents: 6721
diff changeset
124 .long_name = NULL_IF_CONFIG_SMALL("libgsm GSM"),
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
125 };
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
126
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
127 AVCodec libgsm_ms_encoder = {
5102
4323e587708d Give names of external library decoders/encoders a lib prefix
diego
parents: 4551
diff changeset
128 "libgsm_ms",
11560
8a4984c5cacc Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 11138
diff changeset
129 AVMEDIA_TYPE_AUDIO,
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
130 CODEC_ID_GSM_MS,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
131 0,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
132 libgsm_init,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
133 libgsm_encode_frame,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
134 libgsm_close,
10145
7955db355703 Make sample_fmts and channel_layouts compound literals const to reduce size of
reimar
parents: 9355
diff changeset
135 .sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
7040
e943e1409077 Make AVCodec long_names definition conditional depending on CONFIG_SMALL.
stefano
parents: 6721
diff changeset
136 .long_name = NULL_IF_CONFIG_SMALL("libgsm GSM Microsoft variant"),
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
137 };
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
138
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
139 static int libgsm_decode_frame(AVCodecContext *avctx,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
140 void *data, int *data_size,
9355
54bc8a2727b0 Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an
rbultje
parents: 8718
diff changeset
141 AVPacket *avpkt) {
54bc8a2727b0 Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an
rbultje
parents: 8718
diff changeset
142 const uint8_t *buf = avpkt->data;
54bc8a2727b0 Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an
rbultje
parents: 8718
diff changeset
143 int buf_size = avpkt->size;
6673
679b9ef6f5f3 Make sure some value is always returned via data_size
mbardiaux
parents: 6672
diff changeset
144 *data_size = 0; /* In case of error */
679b9ef6f5f3 Make sure some value is always returned via data_size
mbardiaux
parents: 6672
diff changeset
145 if(buf_size < avctx->block_align) return -1;
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
146 switch(avctx->codec_id) {
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
147 case CODEC_ID_GSM:
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
148 if(gsm_decode(avctx->priv_data,buf,data)) return -1;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
149 *data_size = GSM_FRAME_SIZE*sizeof(int16_t);
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
150 break;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
151 case CODEC_ID_GSM_MS:
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
152 if(gsm_decode(avctx->priv_data,buf,data) ||
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
153 gsm_decode(avctx->priv_data,buf+33,((int16_t*)data)+GSM_FRAME_SIZE)) return -1;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
154 *data_size = GSM_FRAME_SIZE*sizeof(int16_t)*2;
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
155 }
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
156 return avctx->block_align;
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
157 }
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
158
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
159 AVCodec libgsm_decoder = {
5102
4323e587708d Give names of external library decoders/encoders a lib prefix
diego
parents: 4551
diff changeset
160 "libgsm",
11560
8a4984c5cacc Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 11138
diff changeset
161 AVMEDIA_TYPE_AUDIO,
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
162 CODEC_ID_GSM,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
163 0,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
164 libgsm_init,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
165 NULL,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
166 libgsm_close,
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
167 libgsm_decode_frame,
7040
e943e1409077 Make AVCodec long_names definition conditional depending on CONFIG_SMALL.
stefano
parents: 6721
diff changeset
168 .long_name = NULL_IF_CONFIG_SMALL("libgsm GSM"),
2729
26bf6f4e9945 libgsm warper by (Alban Bedel: albeu, free fr)
michael
parents:
diff changeset
169 };
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
170
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
171 AVCodec libgsm_ms_decoder = {
5102
4323e587708d Give names of external library decoders/encoders a lib prefix
diego
parents: 4551
diff changeset
172 "libgsm_ms",
11560
8a4984c5cacc Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 11138
diff changeset
173 AVMEDIA_TYPE_AUDIO,
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
174 CODEC_ID_GSM_MS,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
175 0,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
176 libgsm_init,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
177 NULL,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
178 libgsm_close,
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
179 libgsm_decode_frame,
7040
e943e1409077 Make AVCodec long_names definition conditional depending on CONFIG_SMALL.
stefano
parents: 6721
diff changeset
180 .long_name = NULL_IF_CONFIG_SMALL("libgsm GSM Microsoft variant"),
4551
c0bf618fbe7e Add support for MS-GSM codec
mbardiaux
parents: 3947
diff changeset
181 };