#include <time.h>
#include "avformat.h"
#include "internal.h"
+#include "libavcodec/dv_profile.h"
#include "libavcodec/dvdata.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mathematics.h"
return frame[offs] == t ? &frame[offs] : NULL;
}
+static const int dv_audio_frequency[3] = {
+ 48000, 44100, 32000,
+};
+
/*
* There's a couple of assumptions being made here:
* 1. By default we silence erroneous (0x8000/16bit 0x800/12bit) audio samples.
return NULL;
}
- c->sys = NULL;
- c->fctx = s;
- memset(c->ast, 0, sizeof(c->ast));
- c->ach = 0;
- c->frames = 0;
- c->abytes = 0;
-
+ c->fctx = s;
c->vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
c->vst->codec->codec_id = CODEC_ID_DVVIDEO;
c->vst->codec->bit_rate = 25000000;
return offset + s->data_offset;
}
-void dv_offset_reset(DVDemuxContext *c, int64_t frame_offset)
+void ff_dv_offset_reset(DVDemuxContext *c, int64_t frame_offset)
{
c->frames= frame_offset;
if (c->ach)
DVDemuxContext *c = r->dv_demux;
int64_t offset = dv_frame_offset(s, c, timestamp, flags);
- dv_offset_reset(c, offset / c->sys->frame_size);
+ if (avio_seek(s->pb, offset, SEEK_SET) < 0)
+ return -1;
- offset = avio_seek(s->pb, offset, SEEK_SET);
- return (offset < 0) ? offset : 0;
+ ff_dv_offset_reset(c, offset / c->sys->frame_size);
+ return 0;
}
static int dv_read_close(AVFormatContext *s)
#if CONFIG_DV_DEMUXER
AVInputFormat ff_dv_demuxer = {
.name = "dv",
- .long_name = NULL_IF_CONFIG_SMALL("DV video format"),
+ .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),
.priv_data_size = sizeof(RawDVContext),
.read_probe = dv_probe,
.read_header = dv_read_header,
.read_packet = dv_read_packet,
.read_close = dv_read_close,
.read_seek = dv_read_seek,
- .extensions = "dv,dif",
+ .extensions = "dv,dif",
};
#endif