Merge commit '2d0432d918a71468419b7ac1e543ab3b399d3d37'
authorHendrik Leppkes <h.leppkes@gmail.com>
Fri, 1 Jan 2016 16:14:46 +0000 (17:14 +0100)
committerHendrik Leppkes <h.leppkes@gmail.com>
Fri, 1 Jan 2016 16:14:46 +0000 (17:14 +0100)
* commit '2d0432d918a71468419b7ac1e543ab3b399d3d37':
  vocdec: put the code not shared with other demuxers under appropriate ifdef

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavformat/vocdec.c

@@@ -165,19 -118,47 +127,57 @@@ ff_voc_get_packet(AVFormatContext *s, A
          max_size = 2048;
      size = FFMIN(voc->remaining_size, max_size);
      voc->remaining_size -= size;
 -    return av_get_packet(pb, pkt, size);
 +
 +    ret = av_get_packet(pb, pkt, size);
 +    pkt->dts = pkt->pts = voc->pts;
 +
 +    duration = av_get_audio_frame_duration(st->codec, size);
 +    if (duration > 0 && voc->pts != AV_NOPTS_VALUE)
 +        voc->pts += duration;
 +    else
 +        voc->pts = AV_NOPTS_VALUE;
 +
 +    return ret;
  }
  
+ #if CONFIG_VOC_DEMUXER
+ static int voc_probe(AVProbeData *p)
+ {
+     int version, check;
+     if (memcmp(p->buf, ff_voc_magic, sizeof(ff_voc_magic) - 1))
+         return 0;
+     version = AV_RL16(p->buf + 22);
+     check = AV_RL16(p->buf + 24);
+     if (~version + 0x1234 != check)
+         return 10;
+     return AVPROBE_SCORE_MAX;
+ }
+ static int voc_read_header(AVFormatContext *s)
+ {
+     VocDecContext *voc = s->priv_data;
+     AVIOContext *pb = s->pb;
+     int header_size;
+     AVStream *st;
+     avio_skip(pb, 20);
+     header_size = avio_rl16(pb) - 22;
+     if (header_size != 4) {
+         av_log(s, AV_LOG_ERROR, "unknown header size: %d\n", header_size);
+         return AVERROR(ENOSYS);
+     }
+     avio_skip(pb, header_size);
+     st = avformat_new_stream(s, NULL);
+     if (!st)
+         return AVERROR(ENOMEM);
+     st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
+     voc->remaining_size = 0;
+     return 0;
+ }
  static int voc_read_packet(AVFormatContext *s, AVPacket *pkt)
  {
      return ff_voc_get_packet(s, pkt, s->streams[0], 0);
@@@ -212,6 -171,6 +212,7 @@@ AVInputFormat ff_voc_demuxer = 
      .read_probe     = voc_probe,
      .read_header    = voc_read_header,
      .read_packet    = voc_read_packet,
 +    .read_seek      = voc_read_seek,
      .codec_tag      = (const AVCodecTag* const []){ ff_voc_codec_tags, 0 },
  };
+ #endif /* CONFIG_VOC_DEMUXER */