📄 demo_dual_decode.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 + -