#include "bapp_hdmi.h" #include "nexus_platform.h" #include "nexus_pid_channel.h" #include "nexus_parser_band.h" #include "nexus_video_decoder.h" #include "nexus_stc_channel.h" #include "nexus_display.h" #include "nexus_video_window.h" #include "nexus_audio_dac.h" #include "nexus_audio_decoder.h" #include "nexus_audio_output.h" #include "nexus_spdif_output.h" #include "nexus_hdmi_output.h" #include "nexus_component_output.h" #include "bstd.h" #include "bkni.h" #include #include #include static bool compressedHdmi = false, audioStarted = false; static NEXUS_AudioDecoderHandle pcmDecoder, compressedDecoder; static NEXUS_AudioDecoderStartSettings audioProgram; void bapp_hdmi_disconnect_audio(NEXUS_HdmiOutputHandle hdmi) { NEXUS_AudioDecoderHandle decoder; if ( compressedHdmi ) { decoder = compressedDecoder; } else { decoder = pcmDecoder; } if ( audioStarted ) NEXUS_AudioDecoder_Stop(decoder); NEXUS_AudioOutput_RemoveAllInputs(NEXUS_HdmiOutput_GetAudioConnector(hdmi)); if ( audioStarted ) NEXUS_AudioDecoder_Start(decoder, &audioProgram); } void bapp_hdmi_connect_audio(NEXUS_HdmiOutputHandle hdmi) { NEXUS_AudioDecoderHandle decoder; NEXUS_AudioInput connector; if ( compressedHdmi ) { decoder = compressedDecoder; connector = NEXUS_AudioDecoder_GetConnector(decoder, NEXUS_AudioDecoderConnectorType_eCompressed); } else { decoder = pcmDecoder; connector = NEXUS_AudioDecoder_GetConnector(decoder, NEXUS_AudioDecoderConnectorType_eStereo); } if ( audioStarted ) NEXUS_AudioDecoder_Stop(decoder); NEXUS_AudioOutput_AddInput(NEXUS_HdmiOutput_GetAudioConnector(hdmi), connector); if ( audioStarted ) NEXUS_AudioDecoder_Start(decoder, &audioProgram); } void bapp_hdmi_hotplug_callback(void *pParam, int iParam) { NEXUS_HdmiOutputStatus status; NEXUS_HdmiOutputHandle hdmi = pParam; NEXUS_DisplayHandle display = (NEXUS_DisplayHandle)iParam; NEXUS_HdmiOutput_GetStatus(hdmi, &status); fprintf(stderr, "HDMI hotplug event: %s\n", status.connected?"connected":"not connected"); /* the app can choose to switch to the preferred format, but it's not required. */ if ( status.connected ) { NEXUS_DisplaySettings displaySettings; NEXUS_Display_GetSettings(display, &displaySettings); if ( !status.videoFormatSupported[displaySettings.format] ) { fprintf(stderr, "\nCurrent format not supported by attached monitor. Switching to preferred format %d\n", status.preferredVideoFormat); displaySettings.format = status.preferredVideoFormat; NEXUS_Display_SetSettings(display, &displaySettings); } } } static void bapp_hdmi_open(bapp_nexus_t *p_nexus) { } static void bapp_hdmi_close() { }