#include "internal.h"
#include "libavcodec/dv_profile.h"
#include "libavcodec/dvdata.h"
+#include "libavutil/channel_layout.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mathematics.h"
#include "dv.h"
/* Dynamic handling of the audio streams in DV */
for (i = 0; i < ach; i++) {
- if (!c->ast[i]) {
- c->ast[i] = avformat_new_stream(c->fctx, NULL);
- if (!c->ast[i])
- break;
- avpriv_set_pts_info(c->ast[i], 64, 1, 30000);
- c->ast[i]->codec->codec_type = AVMEDIA_TYPE_AUDIO;
- c->ast[i]->codec->codec_id = CODEC_ID_PCM_S16LE;
-
- av_init_packet(&c->audio_pkt[i]);
- c->audio_pkt[i].size = 0;
- c->audio_pkt[i].data = c->audio_buf[i];
- c->audio_pkt[i].stream_index = c->ast[i]->index;
- c->audio_pkt[i].flags |= AV_PKT_FLAG_KEY;
- }
- c->ast[i]->codec->sample_rate = dv_audio_frequency[freq];
- c->ast[i]->codec->channels = 2;
- c->ast[i]->codec->bit_rate = 2 * dv_audio_frequency[freq] * 16;
- c->ast[i]->start_time = 0;
+ if (!c->ast[i]) {
+ c->ast[i] = avformat_new_stream(c->fctx, NULL);
+ if (!c->ast[i])
+ break;
+ avpriv_set_pts_info(c->ast[i], 64, 1, 30000);
+ c->ast[i]->codec->codec_type = AVMEDIA_TYPE_AUDIO;
+ c->ast[i]->codec->codec_id = AV_CODEC_ID_PCM_S16LE;
+
+ av_init_packet(&c->audio_pkt[i]);
+ c->audio_pkt[i].size = 0;
+ c->audio_pkt[i].data = c->audio_buf[i];
+ c->audio_pkt[i].stream_index = c->ast[i]->index;
+ c->audio_pkt[i].flags |= AV_PKT_FLAG_KEY;
+ }
+ c->ast[i]->codec->sample_rate = dv_audio_frequency[freq];
+ c->ast[i]->codec->channels = 2;
+ c->ast[i]->codec->channel_layout = AV_CH_LAYOUT_STEREO;
+ c->ast[i]->codec->bit_rate = 2 * dv_audio_frequency[freq] * 16;
+ c->ast[i]->start_time = 0;
}
c->ach = i;
avctx = c->vst->codec;
avpriv_set_pts_info(c->vst, 64, c->sys->time_base.num,
- c->sys->time_base.den);
+ c->sys->time_base.den);
avctx->time_base= c->sys->time_base;
if (!avctx->width){
avctx->width = c->sys->width;
vsc_pack = dv_extract_pack(frame, dv_video_control);
apt = frame[4] & 0x07;
is16_9 = (vsc_pack && ((vsc_pack[2] & 0x07) == 0x02 ||
- (!apt && (vsc_pack[2] & 0x07) == 0x07)));
+ (!apt && (vsc_pack[2] & 0x07) == 0x07)));
c->vst->sample_aspect_ratio = c->sys->sar[is16_9];
avctx->bit_rate = av_rescale_q(c->sys->frame_size, (AVRational){8,1},
c->sys->time_base);
c->fctx = s;
c->vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
- c->vst->codec->codec_id = CODEC_ID_DVVIDEO;
+ c->vst->codec->codec_id = AV_CODEC_ID_DVVIDEO;
c->vst->codec->bit_rate = 25000000;
c->vst->start_time = 0;
int i;
for (i = 0; i < c->ach; i++) {
- if (c->ast[i] && c->audio_pkt[i].size) {
- *pkt = c->audio_pkt[i];
- c->audio_pkt[i].size = 0;
- size = pkt->size;
- break;
- }
+ if (c->ast[i] && c->audio_pkt[i].size) {
+ *pkt = c->audio_pkt[i];
+ c->audio_pkt[i].size = 0;
+ size = pkt->size;
+ break;
+ }
}
return size;
if (buf_size < DV_PROFILE_BYTES ||
!(c->sys = avpriv_dv_frame_profile(c->sys, buf, buf_size)) ||
buf_size < c->sys->frame_size) {
- return -1; /* Broken frame, or not enough data */
+ return -1; /* Broken frame, or not enough data */
}
/* Queueing audio packet */
/* FIXME: in case of no audio/bad audio we have to do something */
size = dv_extract_audio_info(c, buf);
for (i = 0; i < c->ach; i++) {
- c->audio_pkt[i].size = size;
- c->audio_pkt[i].pts = c->abytes * 30000*8 / c->ast[i]->codec->bit_rate;
- ppcm[i] = c->audio_buf[i];
+ c->audio_pkt[i].size = size;
+ c->audio_pkt[i].pts = c->abytes * 30000 * 8 / c->ast[i]->codec->bit_rate;
+ ppcm[i] = c->audio_buf[i];
}
if (c->ach)
dv_extract_audio(buf, ppcm, c->sys);
pkt->data = buf;
pkt->size = size;
pkt->flags |= AV_PKT_FLAG_KEY;
- pkt->stream_index = c->vst->id;
+ pkt->stream_index = c->vst->index;
pkt->pts = c->frames;
c->frames++;
#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,