//////////////////////////////////////////////////////////////////////////// /// /// Populate the AUDIO_DECODER's MME_SET_GLOBAL_TRANSFORMER_PARAMS parameters for AVS audio. /// CodecStatus_t Codec_MmeAudioAvs_c::FillOutSetStreamParametersCommand(void) { CodecStatus_t Status; AvsAudioStreamParameters_t *Parsed = (AvsAudioStreamParameters_t *)ParsedFrameParameters->StreamParameterStructure; AvsAudioCodecStreamParameterContext_t *Context = (AvsAudioCodecStreamParameterContext_t *)StreamParameterContext; //Parsed may be NULL if call to this function results from an ALSA parameter update. if (Parsed) { // // Examine the parsed stream parameters and determine what type of codec to instanciate // DecoderId = Parsed->Layer == 3 ? ACC_MP3_ID : ACC_MP2A_ID; } // // Now fill out the actual structure // memset(&(Context->StreamParameters), 0, sizeof(Context->StreamParameters)); Status = FillOutTransformerGlobalParameters(&(Context->StreamParameters)); if (Status != CodecNoError) return Status; // // Fill out the actual command // Context->BaseContext.MMECommand.CmdStatus.AdditionalInfoSize = 0; Context->BaseContext.MMECommand.CmdStatus.AdditionalInfo_p = NULL; Context->BaseContext.MMECommand.ParamSize = sizeof(Context->StreamParameters); Context->BaseContext.MMECommand.Param_p = (MME_GenericParams_t)(&Context->StreamParameters); // return CodecNoError; }
//////////////////////////////////////////////////////////////////////////// /// /// Populate the AUDIO_DECODER's MME_SET_GLOBAL_TRANSFORMER_PARAMS parameters for LPCM audio. /// CodecStatus_t Codec_MmeAudioLpcm_c::FillOutSetStreamParametersCommand(void) { CodecStatus_t Status; //LpcmAudioStreamParameters_t *Parsed = (LpcmAudioStreamParameters_t *)ParsedFrameParameters->StreamParameterStructure; LpcmAudioCodecStreamParameterContext_t *Context = (LpcmAudioCodecStreamParameterContext_t *)StreamParameterContext; // // Examine the parsed stream parameters and determine what type of codec to instanciate // DecoderId = ACC_LPCM_ID; // // Now fill out the actual structure // memset(&(Context->StreamParameters), 0, sizeof(Context->StreamParameters)); Status = FillOutTransformerGlobalParameters(&(Context->StreamParameters)); if (Status != CodecNoError) return Status; // // Fill out the actual command // Context->BaseContext.MMECommand.CmdStatus.AdditionalInfoSize = 0; Context->BaseContext.MMECommand.CmdStatus.AdditionalInfo_p = NULL; Context->BaseContext.MMECommand.ParamSize = sizeof(Context->StreamParameters); Context->BaseContext.MMECommand.Param_p = (MME_GenericParams_t)(&Context->StreamParameters); // return CodecNoError; }
//////////////////////////////////////////////////////////////////////////// /// /// Populate the AUDIO_DECODER's MME_SET_GLOBAL_TRANSFORMER_PARAMS parameters for DTSHD audio. /// CodecStatus_t Codec_MmeAudioDtshd_c::FillOutSetStreamParametersCommand( void ) { CodecStatus_t Status; //DtshdAudioStreamParameters_t *Parsed = (DtshdAudioStreamParameters_t *)ParsedFrameParameters->StreamParameterStructure; DtshdAudioCodecStreamParameterContext_t *Context = (DtshdAudioCodecStreamParameterContext_t *)StreamParameterContext; if ((ParsedAudioParameters->OriginalEncoding != AudioOriginalEncodingDtshdLBR) && IsLbrStream) { CODEC_TRACE("This stream does not contain any lbr extension!\n"); return CodecError; } // if the stream is dtshd, then the "transcoding" might be required if ( (ParsedAudioParameters->OriginalEncoding == AudioOriginalEncodingDtshdMA) || (ParsedAudioParameters->OriginalEncoding == AudioOriginalEncodingDtshd) ) { if (ParsedAudioParameters->BackwardCompatibleProperties.SampleRateHz && ParsedAudioParameters->BackwardCompatibleProperties.SampleCount) { // a core is present, so transcode is possible TranscodeEnable = true; } else { TranscodeEnable = false; } } else { TranscodeEnable = false; } // // Examine the parsed stream parameters and determine what type of codec to instanciate // DecoderId = ACC_DTS_ID; // // Now fill out the actual structure // memset( &(Context->StreamParameters), 0, sizeof(Context->StreamParameters) ); Status = FillOutTransformerGlobalParameters( &(Context->StreamParameters) ); if( Status != CodecNoError ) return Status; // // Fillout the actual command // Context->BaseContext.MMECommand.CmdStatus.AdditionalInfoSize = 0; Context->BaseContext.MMECommand.CmdStatus.AdditionalInfo_p = NULL; Context->BaseContext.MMECommand.ParamSize = sizeof(Context->StreamParameters); Context->BaseContext.MMECommand.Param_p = (MME_GenericParams_t)(&Context->StreamParameters); // return CodecNoError; }
//}}} //{{{ FillOutTransformerInitializationParameters //////////////////////////////////////////////////////////////////////////// /// /// Populate the AUDIO_DECODER's initialization parameters for PCM audio. /// CodecStatus_t Codec_MmeAudioPcm_c::FillOutTransformerInitializationParameters(void) { CodecStatus_t Status; MME_LxAudioDecoderInitParams_t &Params = AudioDecoderInitializationParameters; MMEInitializationParameters.TransformerInitParamsSize = sizeof(Params); MMEInitializationParameters.TransformerInitParams_p = &Params; Status = Codec_MmeAudio_c::FillOutTransformerInitializationParameters(); if (Status != CodecNoError) return Status; return FillOutTransformerGlobalParameters(&Params.GlobalParams); }
//}}} //{{{ FillOutSetStreamParametersCommand //////////////////////////////////////////////////////////////////////////// /// /// Populate the AUDIO_DECODER's MME_SET_GLOBAL_TRANSFORMER_PARAMS parameters for PCM audio. /// CodecStatus_t Codec_MmeAudioPcm_c::FillOutSetStreamParametersCommand( void ) { CodecStatus_t Status; PcmAudioCodecStreamParameterContext_t* Context = (PcmAudioCodecStreamParameterContext_t *)StreamParameterContext; CODEC_TRACE("\n"); // Fill out the structure #if 0 // There are no set stream parameters for Vp6 decoder so the transformer is // terminated and restarted when required (i.e. if width or height change). if (RestartTransformer) { TerminateMMETransformer(); memset (&MMEInitializationParameters, 0x00, sizeof(MME_TransformerInitParams_t)); MMEInitializationParameters.Priority = MME_PRIORITY_NORMAL; MMEInitializationParameters.StructSize = sizeof(MME_TransformerInitParams_t); MMEInitializationParameters.Callback = &MMECallbackStub; MMEInitializationParameters.CallbackUserData = this; FillOutTransformerInitializationParameters (); MMEStatus = MME_InitTransformer (Configuration.TransformName[SelectedTransformer], &MMEInitializationParameters, &MMEHandle); if (MMEStatus == MME_SUCCESS) { CODEC_DEBUG ("New Stream Params %dx%d\n", DecodingWidth, DecodingHeight); CodecStatus = CodecNoError; RestartTransformer = eAccFalse; ParsedFrameParameters->NewStreamParameters = false; MMEInitialized = true; } } #endif memset (&(Context->StreamParameters), 0, sizeof(Context->StreamParameters)); Status = FillOutTransformerGlobalParameters (&(Context->StreamParameters)); if (Status != CodecNoError) return Status; // Fillout the actual command Context->BaseContext.MMECommand.CmdStatus.AdditionalInfoSize = 0; Context->BaseContext.MMECommand.CmdStatus.AdditionalInfo_p = NULL; Context->BaseContext.MMECommand.ParamSize = sizeof(Context->StreamParameters); Context->BaseContext.MMECommand.Param_p = (MME_GenericParams_t)(&Context->StreamParameters); return CodecNoError; }
//////////////////////////////////////////////////////////////////////////// /// /// Populate the AUDIO_DECODER's initialization parameters for SPDIFIN audio. /// /// When this method completes Codec_MmeAudio_c::AudioDecoderInitializationParameters /// will have been filled out with valid values sufficient to initialize an /// SPDIFIN audio decoder. /// CodecStatus_t Codec_MmeAudioSpdifin_c::FillOutTransformerInitializationParameters(void) { CodecStatus_t Status; MME_LxAudioDecoderInitParams_t &Params = AudioDecoderInitializationParameters; // MMEInitializationParameters.TransformerInitParamsSize = sizeof(Params); MMEInitializationParameters.TransformerInitParams_p = &Params; // Status = Codec_MmeAudio_c::FillOutTransformerInitializationParameters(); if (Status != CodecNoError) return Status; // Spdifin decoder must be handled as streambase. AUDIODEC_SET_STREAMBASE((&Params), ACC_MME_TRUE); // return FillOutTransformerGlobalParameters(&Params.GlobalParams); }