⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_dual_decode.c

📁 BCM方案在LINUX下DEMO解码程序源文件
💻 C
字号:
#include "bsettop.h"A#include <stdio.h>#define DBG_MSG sprintf( stderr, "[MSG] FILE: %s, FUNC: %s, LINE: %d\n", __FILE__, __FUNCTION__, __LINE__ )#define DBG_WRN sprintf( stderr, "[WRN] FILE: %s, FUNC: %s, LINE: %d\n", __FILE__, __FUNCTION__, __LINE__ )#define DBG_ERR sprintf( stderr, "[ERR] FILE: %s, FUNC: %s, LINE: %d\n", __FILE__, __FUNCTION__, __LINE__ )int main( void ){	bresult             rc;    bplayback_file_t    file0, file1,file2;    bplayback_params    playback_params;    bplaypump_t         playpump0, playpump1,playpump2;	bplayback_t         playback0, playback1,playback2;    bdecode_t           decode0, decode1,decode2;	bdisplay_t          display0, display1,display2;    bdisplay_settings   settings0, settings1,settings2;    bdecode_window_t    window0, window1,window2;	    bstream_t           stream0, stream1,stream2;	bstream_mpeg        mpeg;	baudio_decode_t     audio0, audio1,audio2;    rc = bsettop_init( BSETTOP_VERSION );	if ( rc )    {        goto error;    }        /* open file 0 */#if 0    playback0 = bplayback_open();    if ( !playback0 )    {        goto error;    }        file0 = bplayback_file_open( "videos/stream0.mpg", NULL );	if ( !file0 )    {        goto error;    }	bstream_mpeg_init( &mpeg );	mpeg.video[0].pid = 0x21;	mpeg.audio[0].pid = 0x24;    mpeg.video[0].format =bvideo_codec_mpeg2;	mpeg.audio[0].format = baudio_format_mpeg;	mpeg.pcr_pid = 0x21;	bplayback_params_init( &playback_params, playback0 );	playback_params.index_format = bindex_format_bcm;        playpump0 = bplaypump_open( B_ID( 0 ), NULL );    if ( !playpump0 )    {        goto error;    }    decode0 = bdecode_open( B_ID( 0 ) );    if ( !decode0 )    {        goto error;    }    display0 = bdisplay_open( B_ID( 0 ) );    if ( !display0 )    {        goto error;    }    bdisplay_get( display0, &settings0 );    settings0.format = bvideo_format_1080i;    settings0.component = NULL;    settings0.dvi = boutput_hdmi_open( B_ID( 0 ) );    settings0.rf = NULL;    settings0.svideo = NULL;    settings0.composite = NULL;    bdisplay_set( display0, &settings0 );    window0 = bdecode_window_open( B_ID( 0 ), display0 );    if ( !window0 )    {        goto error;    }    stream0 = bplayback_start( playback0, playpump0, &mpeg, file0, &playback_params );	if ( !stream0 )    {        goto error;    }	if ( bdecode_start( decode0, stream0, window0 ) )	{        goto error;    }#endif    /* open file 1 */#if 1    playback1 = bplayback_open();    if ( !playback1 )    {        goto error;    }    file1 = bplayback_file_open( "videos/stream1.mpg", NULL );	if ( !file1 )    {        goto error;    }#if 1	bstream_mpeg_init( &mpeg );	mpeg.video[0].pid = 0x65;	mpeg.audio[0].pid = 0x100;    mpeg.video[0].format = bvideo_codec_h264;	mpeg.audio[0].format = baudio_format_mpeg;	mpeg.pcr_pid = 0x65;#else	bstream_mpeg_init( &mpeg );	mpeg.video[0].pid = 0x21;	mpeg.audio[0].pid = 0x24;    mpeg.video[0].format = bvideo_codec_mpeg2;	mpeg.audio[0].format = baudio_format_mpeg;	mpeg.pcr_pid = 0x21;#endif	bplayback_params_init( &playback_params, playback1 );	playback_params.index_format = bindex_format_bcm;        playpump1 = bplaypump_open( B_ID( 0 ), NULL );    if ( !playpump1 )    {        goto error;    }    decode1 = bdecode_open( B_ID( 0 ) );    if ( !decode1 )    {        goto error;    }    display1 = bdisplay_open( B_ID( 0 ) );    if ( !display1 )    {        goto error;    }        bdisplay_get( display1, &settings1 );    settings1.format = /*bvideo_format_480p;//*/ bvideo_format_ntsc;    settings1.component =NULL;// boutput_component_open( B_ID( 0 ) );    settings1.dvi =/*boutput_hdmi_open( B_ID( 0 ) );//*/ NULL;    settings1.rf = NULL;    settings1.svideo = NULL;    settings1.composite =boutput_composite_open(B_ID(1)); //NULL;    bdisplay_set( display1, &settings1 );    window1 = bdecode_window_open( B_ID( 0 ), display1 );    if ( !window1 )    {        goto error;    }    stream1 = bplayback_start( playback1, playpump1, &mpeg, file1, &playback_params );	if ( !stream1 )    {        goto error;    }	if ( bdecode_start( decode1, stream1, window1 ) )	{        goto error;    }#endif   /* open file2 */#if 0    playback2 = bplayback_open();    if ( !playback2 )    {        goto error;    }        file2 = bplayback_file_open( "videos/wdn3_0.mpg", NULL );	if ( !file2 )    {        goto error;    }	bstream_mpeg_init( &mpeg );	mpeg.video[0].pid = 0x20;	mpeg.audio[0].pid = 0x21;    mpeg.video[0].format =bvideo_codec_mpeg2;	mpeg.audio[0].format = baudio_format_mpeg;	mpeg.pcr_pid = 0x20;	bplayback_params_init( &playback_params, playback2 );	playback_params.index_format = bindex_format_bcm;        playpump2 = bplaypump_open( B_ID( 0 ), NULL );    if ( !playpump2 )    {        goto error;    }    decode2 = bdecode_open( B_ID( 0 ) );    if ( !decode2 )    {        goto error;    }    display2 = bdisplay_open( B_ID( 0 ) );    if ( !display2 )    {        goto error;    }    bdisplay_get( display2, &settings2 );    settings2.format = bvideo_format_1080i;    settings2.component = NULL;    settings2.dvi = boutput_hdmi_open( B_ID( 0 ) );    settings2.rf = NULL;    settings2.svideo = NULL;    settings2.composite = NULL;    bdisplay_set( display2, &settings2 );    window2 = bdecode_window_open( B_ID( 0 ), display2 );    if ( !window2 )    {        goto error;    }    stream2 = bplayback_start( playback2, playpump2, &mpeg, file2, &playback_params );	if ( !stream2 )    {        goto error;    }	if ( bdecode_start( decode2, stream2, window2 ) )	{        goto error;    }#endif	getchar(); /* press enter to switch to pip mode */#if 0	/* switching from dual output to pip mode requires stopping both decodes */	bdecode_stop(decode0);	bdecode_stop(decode1);	/* reconfigure for pip mode */	audio1 = bdecode_detach_audio(decode1);	bdecode_window_close(window1);	/* the pip decode window is resized by default */	window1 = bdecode_window_open(B_ID(1), display0);	/* restart the decodes */	if (bdecode_start(decode0, stream0, window0))		goto error;	if (bdecode_start(decode1, stream1, window1))		goto error;	getchar(); /* press enter to switch audio between main and pip */	audio0 = bdecode_detach_audio(decode0);	if (bdecode_attach_audio(decode1, audio0))		goto error;	getchar(); /* press enter to stop both decodes */#endif	return 0;error:	return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -