diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-01-12 00:52:40 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-01-12 01:10:32 +0100 |
commit | 794006f8fe403ccd2993513a8e4fbe885ef7f9fb (patch) | |
tree | 42edca40fc6f5ba24543f611086891ae4c6b6f68 /libavformat | |
parent | 4093d130d1934edcd098014d306492173527f1f6 (diff) | |
parent | e7d02b04dcfb65d1873b81bd3281442ac5ddec1d (diff) | |
download | ffmpeg-794006f8fe403ccd2993513a8e4fbe885ef7f9fb.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
fft: init functions with INIT_XMM/YMM.
pcmenc: set frame_size to 0.
gsm demuxer: use generic seeking instead of a gsm-specific function.
gsm demuxer: return packets with only 1 gsm block at a time.
avcodec: add GSM parser
doc: Replace ffmpeg references in avserver config file by avconv.
doc: Fix names of av_log color environment variables.
Fix a bunch of platform name and other typos.
Add some missing changelog entries and release 0.8_beta2
No longer build libpostproc by default
wtv: fix memleaks during normal operation
threads: add CODEC_CAP_AUTO_THREADS for libvpx and xavs
Conflicts:
Changelog
RELEASE
cmdutils.c
configure
doc/ffserver.conf
doc/platform.texi
ffplay.c
libavcodec/Makefile
libavcodec/version.h
libavformat/wtv.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/gsmdec.c | 40 | ||||
-rw-r--r-- | libavformat/wtvdec.c | 1 |
2 files changed, 4 insertions, 37 deletions
diff --git a/libavformat/gsmdec.c b/libavformat/gsmdec.c index 23608873c1..443f820ad8 100644 --- a/libavformat/gsmdec.c +++ b/libavformat/gsmdec.c @@ -37,7 +37,7 @@ static int gsm_read_packet(AVFormatContext *s, AVPacket *pkt) { int ret, size; - size = GSM_BLOCK_SIZE * 32; + size = GSM_BLOCK_SIZE; pkt->pos = avio_tell(s->pb); pkt->stream_index = 0; @@ -48,7 +48,7 @@ static int gsm_read_packet(AVFormatContext *s, AVPacket *pkt) return ret < 0 ? ret : AVERROR(EIO); } pkt->size = ret; - pkt->duration = ret / GSM_BLOCK_SIZE; + pkt->duration = 1; pkt->pts = pkt->pos / GSM_BLOCK_SIZE; return 0; @@ -65,7 +65,6 @@ static int gsm_read_header(AVFormatContext *s, AVFormatParameters *ap) st->codec->codec_id = s->iformat->value; st->codec->channels = 1; st->codec->sample_rate = c->sample_rate; - st->codec->block_align = GSM_BLOCK_SIZE; st->codec->bit_rate = GSM_BLOCK_SIZE * 8 * c->sample_rate / GSM_BLOCK_SAMPLES; avpriv_set_pts_info(st, 64, GSM_BLOCK_SAMPLES, GSM_SAMPLE_RATE); @@ -73,39 +72,6 @@ static int gsm_read_header(AVFormatContext *s, AVFormatParameters *ap) return 0; } -static int gsm_read_seek2(AVFormatContext *s, int stream_index, int64_t min_ts, - int64_t ts, int64_t max_ts, int flags) -{ - GSMDemuxerContext *c = s->priv_data; - - /* convert timestamps to file positions */ - if (!(flags & AVSEEK_FLAG_BYTE)) { - if (stream_index < 0) { - AVRational bitrate_q = { GSM_BLOCK_SAMPLES, c->sample_rate * GSM_BLOCK_SIZE }; - ts = av_rescale_q(ts, AV_TIME_BASE_Q, bitrate_q); - min_ts = av_rescale_q(min_ts, AV_TIME_BASE_Q, bitrate_q); - max_ts = av_rescale_q(max_ts, AV_TIME_BASE_Q, bitrate_q); - } else { - ts *= GSM_BLOCK_SIZE; - min_ts *= GSM_BLOCK_SIZE; - max_ts *= GSM_BLOCK_SIZE; - } - } - /* round to nearest block boundary */ - ts = (ts + GSM_BLOCK_SIZE / 2) / GSM_BLOCK_SIZE * GSM_BLOCK_SIZE; - ts = FFMAX(0, ts); - - /* handle min/max */ - while (ts < min_ts) - ts += GSM_BLOCK_SIZE; - while (ts > max_ts) - ts -= GSM_BLOCK_SIZE; - if (ts < min_ts || ts > max_ts) - return -1; - - return avio_seek(s->pb, ts, SEEK_SET); -} - static const AVOption options[] = { { "sample_rate", "", offsetof(GSMDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.dbl = GSM_SAMPLE_RATE}, 1, INT_MAX / GSM_BLOCK_SIZE, @@ -126,7 +92,7 @@ AVInputFormat ff_gsm_demuxer = { .priv_data_size = sizeof(GSMDemuxerContext), .read_header = gsm_read_header, .read_packet = gsm_read_packet, - .read_seek2 = gsm_read_seek2, + .flags = AVFMT_GENERIC_INDEX, .extensions = "gsm", .value = CODEC_ID_GSM, .priv_class = &class, diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c index c133d710d9..56050e962e 100644 --- a/libavformat/wtvdec.c +++ b/libavformat/wtvdec.c @@ -1022,6 +1022,7 @@ static int read_seek(AVFormatContext *s, int stream_index, static int read_close(AVFormatContext *s) { WtvContext *wtv = s->priv_data; + av_freep(&wtv->index_entries); wtvfile_close(wtv->pb); return 0; } |