Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-01-10 15:40:38 +0400
committerMichael Niedermayer <michaelni@gmx.at>2013-01-10 15:40:41 +0400
commit6e44662b0521dff7966e38c386057ba06c346c0b (patch)
treee9926c94129d3f00371c778f048881b27b940ffb /libavformat/idcin.c
parent8d691f87776900ec7c4addbed7df87405b16d6df (diff)
parentccc0ffb1ba3fc1adb05a9f56dfc26131e61db3fb (diff)
Merge commit 'ccc0ffb1ba3fc1adb05a9f56dfc26131e61db3fb'
* commit 'ccc0ffb1ba3fc1adb05a9f56dfc26131e61db3fb': idcin: set start_time and packet duration instead of manually tracking pts. idcin: set channel_layout Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/idcin.c')
-rw-r--r--libavformat/idcin.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/libavformat/idcin.c b/libavformat/idcin.c
index de0d32699a..24331484e2 100644
--- a/libavformat/idcin.c
+++ b/libavformat/idcin.c
@@ -68,6 +68,7 @@
* transmitting them to the video decoder
*/
+#include "libavutil/audioconvert.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "avformat.h"
@@ -81,13 +82,12 @@ typedef struct IdcinDemuxContext {
int audio_stream_index;
int audio_chunk_size1;
int audio_chunk_size2;
+ int block_align;
/* demux state variables */
int current_audio_chunk;
int next_chunk_is_video;
int audio_present;
-
- int64_t pts;
} IdcinDemuxContext;
static int idcin_probe(AVProbeData *p)
@@ -180,6 +180,7 @@ static int idcin_read_header(AVFormatContext *s)
if (!st)
return AVERROR(ENOMEM);
avpriv_set_pts_info(st, 33, 1, IDCIN_FPS);
+ st->start_time = 0;
idcin->video_stream_index = st->index;
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
st->codec->codec_id = AV_CODEC_ID_IDCIN;
@@ -199,15 +200,18 @@ static int idcin_read_header(AVFormatContext *s)
st = avformat_new_stream(s, NULL);
if (!st)
return AVERROR(ENOMEM);
- avpriv_set_pts_info(st, 33, 1, IDCIN_FPS);
+ avpriv_set_pts_info(st, 63, 1, sample_rate);
+ st->start_time = 0;
idcin->audio_stream_index = st->index;
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
st->codec->codec_tag = 1;
st->codec->channels = channels;
+ st->codec->channel_layout = channels > 1 ? AV_CH_LAYOUT_STEREO :
+ AV_CH_LAYOUT_MONO;
st->codec->sample_rate = sample_rate;
st->codec->bits_per_coded_sample = bytes_per_sample * 8;
st->codec->bit_rate = sample_rate * bytes_per_sample * 8 * channels;
- st->codec->block_align = bytes_per_sample * channels;
+ st->codec->block_align = idcin->block_align = bytes_per_sample * channels;
if (bytes_per_sample == 1)
st->codec->codec_id = AV_CODEC_ID_PCM_U8;
else
@@ -226,7 +230,6 @@ static int idcin_read_header(AVFormatContext *s)
}
idcin->next_chunk_is_video = 1;
- idcin->pts = 0;
return 0;
}
@@ -293,7 +296,7 @@ static int idcin_read_packet(AVFormatContext *s,
memcpy(pal, palette, AVPALETTE_SIZE);
}
pkt->stream_index = idcin->video_stream_index;
- pkt->pts = idcin->pts;
+ pkt->duration = 1;
} else {
/* send out the audio chunk */
if (idcin->current_audio_chunk)
@@ -304,10 +307,9 @@ static int idcin_read_packet(AVFormatContext *s,
if (ret < 0)
return ret;
pkt->stream_index = idcin->audio_stream_index;
- pkt->pts = idcin->pts;
+ pkt->duration = chunk_size / idcin->block_align;
idcin->current_audio_chunk ^= 1;
- idcin->pts++;
}
if (idcin->audio_present)