summaryrefslogtreecommitdiffstats
path: root/demux/demux_raw.c
diff options
context:
space:
mode:
Diffstat (limited to 'demux/demux_raw.c')
-rw-r--r--demux/demux_raw.c37
1 files changed, 14 insertions, 23 deletions
diff --git a/demux/demux_raw.c b/demux/demux_raw.c
index d9e7ebb63a..f2b20c597c 100644
--- a/demux/demux_raw.c
+++ b/demux/demux_raw.c
@@ -132,6 +132,18 @@ struct priv {
double frame_rate;
};
+static int generic_open(struct demuxer *demuxer)
+{
+ struct stream *s = demuxer->stream;
+ struct priv *p = demuxer->priv;
+
+ int64_t end = 0;
+ if (stream_control(s, STREAM_CTRL_GET_SIZE, &end) == STREAM_OK)
+ demuxer->duration = (end / p->frame_size) / p->frame_rate;
+
+ return 0;
+}
+
static int demux_rawaudio_open(demuxer_t *demuxer, enum demux_check check)
{
struct demux_rawaudio_opts *opts =
@@ -170,7 +182,7 @@ static int demux_rawaudio_open(demuxer_t *demuxer, enum demux_check check)
.read_frames = c->samplerate / 8,
};
- return 0;
+ return generic_open(demuxer);
}
static int demux_rawvideo_open(demuxer_t *demuxer, enum demux_check check)
@@ -255,7 +267,7 @@ static int demux_rawvideo_open(demuxer_t *demuxer, enum demux_check check)
.read_frames = 1,
};
- return 0;
+ return generic_open(demuxer);
}
static int raw_fill_buffer(demuxer_t *demuxer)
@@ -297,32 +309,12 @@ static void raw_seek(demuxer_t *demuxer, double seek_pts, int flags)
stream_seek(s, (pos / p->frame_size) * p->frame_size);
}
-static int raw_control(demuxer_t *demuxer, int cmd, void *arg)
-{
- struct priv *p = demuxer->priv;
-
- switch (cmd) {
- case DEMUXER_CTRL_GET_TIME_LENGTH: {
- stream_t *s = demuxer->stream;
- int64_t end = 0;
- if (stream_control(s, STREAM_CTRL_GET_SIZE, &end) != STREAM_OK)
- return CONTROL_FALSE;
-
- *((double *) arg) = (end / p->frame_size) / p->frame_rate;
- return CONTROL_OK;
- }
- default:
- return CONTROL_UNKNOWN;
- }
-}
-
const demuxer_desc_t demuxer_desc_rawaudio = {
.name = "rawaudio",
.desc = "Uncompressed audio",
.open = demux_rawaudio_open,
.fill_buffer = raw_fill_buffer,
.seek = raw_seek,
- .control = raw_control,
};
const demuxer_desc_t demuxer_desc_rawvideo = {
@@ -331,5 +323,4 @@ const demuxer_desc_t demuxer_desc_rawvideo = {
.open = demux_rawvideo_open,
.fill_buffer = raw_fill_buffer,
.seek = raw_seek,
- .control = raw_control,
};