@ -249,9 +249,7 @@ HRESULT decklink_input_callback::VideoInputFrameArrived(
// Handle Video Frame
if ( videoFrame ) {
AVPacket pkt ;
AVCodecContext * c ;
av_init_packet ( & pkt ) ;
c = ctx - > video_st - > codec ;
if ( ctx - > frameCount % 25 = = 0 ) {
unsigned long long qsize = avpacket_queue_size ( & ctx - > queue ) ;
av_log ( avctx , AV_LOG_DEBUG ,
@ -354,7 +352,6 @@ HRESULT decklink_input_callback::VideoInputFrameArrived(
}
# endif
c - > frame_number + + ;
if ( avpacket_queue_put ( & ctx - > queue , & pkt ) < 0 ) {
+ + ctx - > dropped ;
}
@ -362,14 +359,12 @@ HRESULT decklink_input_callback::VideoInputFrameArrived(
// Handle Audio Frame
if ( audioFrame ) {
AVCodecContext * c ;
AVPacket pkt ;
BMDTimeValue audio_pts ;
av_init_packet ( & pkt ) ;
c = ctx - > audio_st - > codec ;
//hack among hacks
pkt . size = audioFrame - > GetSampleFrameCount ( ) * ctx - > audio_st - > codec - > channels * ( 16 / 8 ) ;
pkt . size = audioFrame - > GetSampleFrameCount ( ) * ctx - > audio_st - > codecpar - > channels * ( 16 / 8 ) ;
audioFrame - > GetBytes ( & audioFrameBytes ) ;
audioFrame - > GetPacketTime ( & audio_pts , ctx - > audio_st - > time_base . den ) ;
pkt . pts = audio_pts / ctx - > audio_st - > time_base . num ;
@ -386,7 +381,6 @@ HRESULT decklink_input_callback::VideoInputFrameArrived(
pkt . stream_index = ctx - > audio_st - > index ;
pkt . data = ( uint8_t * ) audioFrameBytes ;
c - > frame_number + + ;
if ( avpacket_queue_put ( & ctx - > queue , & pkt ) < 0 ) {
+ + ctx - > dropped ;
}
@ -551,10 +545,10 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
av_log ( avctx , AV_LOG_ERROR , " Cannot add stream \n " ) ;
goto error ;
}
st - > codec - > codec_type = AVMEDIA_TYPE_AUDIO ;
st - > codec - > codec_id = AV_CODEC_ID_PCM_S16LE ;
st - > codec - > sample_rate = bmdAudioSampleRate48kHz ;
st - > codec - > channels = cctx - > audio_channels ;
st - > codecpar - > codec_type = AVMEDIA_TYPE_AUDIO ;
st - > codecpar - > codec_id = AV_CODEC_ID_PCM_S16LE ;
st - > codecpar - > sample_rate = bmdAudioSampleRate48kHz ;
st - > codecpar - > channels = cctx - > audio_channels ;
avpriv_set_pts_info ( st , 64 , 1 , 1000000 ) ; /* 64 bits pts in us */
ctx - > audio_st = st ;
@ -563,21 +557,21 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
av_log ( avctx , AV_LOG_ERROR , " Cannot add stream \n " ) ;
goto error ;
}
st - > codec - > codec_type = AVMEDIA_TYPE_VIDEO ;
st - > codec - > width = ctx - > bmd_width ;
st - > codec - > height = ctx - > bmd_height ;
st - > codecpar - > codec_type = AVMEDIA_TYPE_VIDEO ;
st - > codecpar - > width = ctx - > bmd_width ;
st - > codecpar - > height = ctx - > bmd_height ;
st - > codec - > time_base . den = ctx - > bmd_tb_den ;
st - > codec - > time_base . num = ctx - > bmd_tb_num ;
st - > codec - > bit_rate = av_image_get_buffer_size ( st - > codec - > pix_ fmt, ctx - > bmd_width , ctx - > bmd_height , 1 ) * 1 / av_q2d ( st - > codec - > time_base ) * 8 ;
st - > time_base . den = ctx - > bmd_tb_den ;
st - > time_base . num = ctx - > bmd_tb_num ;
st - > codecpar - > bit_rate = av_image_get_buffer_size ( ( AVPixelFormat ) st - > codecpar - > for ma t , ctx - > bmd_width , ctx - > bmd_height , 1 ) * 1 / av_q2d ( st - > time_base ) * 8 ;
if ( cctx - > v210 ) {
st - > codec - > codec_id = AV_CODEC_ID_V210 ;
st - > codec - > codec_tag = MKTAG ( ' V ' , ' 2 ' , ' 1 ' , ' 0 ' ) ;
st - > codecpar - > codec_id = AV_CODEC_ID_V210 ;
st - > codecpar - > codec_tag = MKTAG ( ' V ' , ' 2 ' , ' 1 ' , ' 0 ' ) ;
} else {
st - > codec - > codec_id = AV_CODEC_ID_RAWVIDEO ;
st - > codec - > pix_ fmt = AV_PIX_FMT_UYVY422 ;
st - > codec - > codec_tag = MKTAG ( ' U ' , ' Y ' , ' V ' , ' Y ' ) ;
st - > codecpar - > codec_id = AV_CODEC_ID_RAWVIDEO ;
st - > codecpar - > for ma t = AV_PIX_FMT_UYVY422 ;
st - > codecpar - > codec_tag = MKTAG ( ' U ' , ' Y ' , ' V ' , ' Y ' ) ;
}
avpriv_set_pts_info ( st , 64 , 1 , 1000000 ) ; /* 64 bits pts in us */
@ -590,16 +584,16 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
av_log ( avctx , AV_LOG_ERROR , " Cannot add stream \n " ) ;
goto error ;
}
st - > codec - > codec_type = AVMEDIA_TYPE_SUBTITLE ;
st - > codec - > time_base . den = ctx - > bmd_tb_den ;
st - > codec - > time_base . num = ctx - > bmd_tb_num ;
st - > codec - > codec_id = AV_CODEC_ID_DVB_TELETEXT ;
st - > codecpar - > codec_type = AVMEDIA_TYPE_SUBTITLE ;
st - > time_base . den = ctx - > bmd_tb_den ;
st - > time_base . num = ctx - > bmd_tb_num ;
st - > codecpar - > codec_id = AV_CODEC_ID_DVB_TELETEXT ;
avpriv_set_pts_info ( st , 64 , 1 , 1000000 ) ; /* 64 bits pts in us */
ctx - > teletext_st = st ;
}
av_log ( avctx , AV_LOG_VERBOSE , " Using %d input audio channels \n " , ctx - > audio_st - > codec - > channels ) ;
result = ctx - > dli - > EnableAudioInput ( bmdAudioSampleRate48kHz , bmdAudioSampleType16bitInteger , ctx - > audio_st - > codec - > channels ) ;
av_log ( avctx , AV_LOG_VERBOSE , " Using %d input audio channels \n " , ctx - > audio_st - > codecpar - > channels ) ;
result = ctx - > dli - > EnableAudioInput ( bmdAudioSampleRate48kHz , bmdAudioSampleType16bitInteger , ctx - > audio_st - > codecpar - > channels ) ;
if ( result ! = S_OK ) {
av_log ( avctx , AV_LOG_ERROR , " Cannot enable audio input \n " ) ;