]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/dtsdec.c
avformat: Constify all muxer/demuxers
[ffmpeg] / libavformat / dtsdec.c
index a3e52cd5966a4358c5682b9aeddab2029d1ad0df..7f8f73fe05243108c6a353e0b077ca26336872bb 100644 (file)
@@ -29,7 +29,7 @@
 #include "avformat.h"
 #include "rawdec.h"
 
-static int dts_probe(AVProbeData *p)
+static int dts_probe(const AVProbeData *p)
 {
     const uint8_t *buf, *bufp;
     uint32_t state = -1;
@@ -37,6 +37,7 @@ static int dts_probe(AVProbeData *p)
     int exss_markers = 0, exss_nextpos = 0;
     int sum, max, pos, ret, i;
     int64_t diff = 0;
+    int diffcount = 1;
     uint8_t hdr[DCA_CORE_FRAME_HEADER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE] = { 0 };
 
     for (pos = FFMIN(4096, p->buf_size); pos < p->buf_size - 2; pos += 2) {
@@ -47,8 +48,12 @@ static int dts_probe(AVProbeData *p)
         bufp = buf = p->buf + pos;
         state = (state << 16) | bytestream_get_be16(&bufp);
 
-        if (pos >= 4)
-            diff += FFABS(((int16_t)AV_RL16(buf)) - (int16_t)AV_RL16(buf-4));
+        if (pos >= 4) {
+            if (AV_RL16(buf) || AV_RL16(buf-4)) {
+                diff += FFABS(((int16_t)AV_RL16(buf)) - (int16_t)AV_RL16(buf-4));
+                diffcount ++;
+            }
+        }
 
         /* extension substream (EXSS) */
         if (state == DCA_SYNCWORD_SUBSTREAM) {
@@ -121,13 +126,14 @@ static int dts_probe(AVProbeData *p)
 
     if (markers[max] > 3 && p->buf_size / markers[max] < 32*1024 &&
         markers[max] * 4 > sum * 3 &&
-        diff / p->buf_size > 200)
+        diff / diffcount > 600)
         return AVPROBE_SCORE_EXTENSION + 1;
 
     return 0;
 }
 
-AVInputFormat ff_dts_demuxer = {
+FF_RAW_DEMUXER_CLASS(dts)
+const AVInputFormat ff_dts_demuxer = {
     .name           = "dts",
     .long_name      = NULL_IF_CONFIG_SMALL("raw DTS"),
     .read_probe     = dts_probe,
@@ -136,4 +142,5 @@ AVInputFormat ff_dts_demuxer = {
     .flags          = AVFMT_GENERIC_INDEX,
     .extensions     = "dts",
     .raw_codec_id   = AV_CODEC_ID_DTS,
-};
+    .priv_data_size = sizeof(FFRawDemuxerContext),
+    .priv_class     = &dts_demuxer_class,};