---
libavformat/gsmdec.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/libavformat/gsmdec.c b/libavformat/gsmdec.c
index d13327d..1942ac1 100644
--- a/libavformat/gsmdec.c
+++ b/libavformat/gsmdec.c
@@ -28,12 +28,25 @@
#define GSM_BLOCK_SIZE 33
#define GSM_BLOCK_SAMPLES 160
#define GSM_SAMPLE_RATE 8000
+#define GSM_MAGIC_NUM 0xD
typedef struct GSMDemuxerContext {
AVClass *class;
int sample_rate;
} GSMDemuxerContext;
+static int gsm_probe(AVProbeData *p)
+{
+ /* check file size. */
+ if (p->buf_size < GSM_BLOCK_SIZE)
+ return 0;
+
+ if (((*p->buf & 0xF0)>>4) == GSM_MAGIC_NUM)
+ return AVPROBE_SCORE_MAX ;
+ return 0;
+}
+
+
static int gsm_read_packet(AVFormatContext *s, AVPacket *pkt)
{
int ret, size;
@@ -94,6 +107,7 @@ AVInputFormat ff_gsm_demuxer = {
.priv_data_size = sizeof(GSMDemuxerContext),
.read_header = gsm_read_header,
.read_packet = gsm_read_packet,
+ .read_probe = gsm_probe,
.flags = AVFMT_GENERIC_INDEX,
.extensions = "gsm",
.raw_codec_id = AV_CODEC_ID_GSM,
--
1.9.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel