📄 parse_audio_cmdline.c
字号:
options->transcode_ec3_to_ac3 = FALSE; options->AudioFreqFromStream = 0; // force afreq options->auto_detect_codec = FALSE; options->OutputSurround20 = SurroundAsStream; options->AudioCP = FALSE; options->mclk = MClkFactor_256Xfs; options->chconfig=2; options->drcenable=1; options->drcboost=100; options->drccut=100; options->drcdialref=-31; options->lossless=FALSE; options->audio_play_time.PlayMode = 0; options->audio_play_time.PlayStartPTS = 0; options->audio_play_time.PlayEndPTS = 0; options->ppdmx = FALSE; options->centerup = FALSE; options->PL2xParams.mode = 3; options->PL2xParams.a = 0; options->PL2xParams.f = 0; options->PL2xParams.r = 0; options->PL2xParams.t = 0; options->PL2xParams.w = 3; options->PL2xParams.d = 7; options->PL2xParams.x = 0; options->PL2xParams.on = 0; options->PL2xParams.autoEX = 0; options->i2s_spdif = 0; options->spdifChannelStatus.Mask = 0; options->spdifChannelStatus.Value = 0; options->mute_enable = FALSE; options->ChannelDelay.Delay_ch0 = 0; options->ChannelDelay.Delay_ch1 = 0; options->ChannelDelay.Delay_ch2 = 0; options->ChannelDelay.Delay_ch3 = 0; options->ChannelDelay.Delay_ch4 = 0; options->ChannelDelay.Delay_ch5 = 0; options->ChannelDelay.Delay_ch6 = 0; options->ChannelDelay.Delay_ch7 = 0; options->mute_gpio = 0; options->mute_polarity = FALSE; options->thisAudioInstance = 0; options->audioInstances = 1; options->cdmx_enable = FALSE; options->sync_stc = TRUE; return RM_OK;}RMstatus parse_audio_cmdline(int argc, char **argv, int *index, struct audio_cmdline *options){ RMstatus err = RM_PENDING; int i = *index; if ( ! strcmp(argv[i], "-afs")) { if (argc > i+1) { options->AudioFreqFromStream = strtol(argv[i+1], NULL, 10); i+=2; err = RM_OK; } else err = RM_ERROR; } else if ( ! strcmp(argv[i], "-ae")) { if (argc > i+1) { options->AudioEngineID = strtol(argv[i+1], NULL, 10); i+=2; err = RM_OK; } else err = RM_ERROR; } else if ( ! strcmp(argv[i], "-ad")) { if (argc > i+1) { options->AudioDecoderID = strtol(argv[i+1], NULL, 10); i+=2; err = RM_OK; } else err = RM_ERROR; } else if ( ! strcmp(argv[i], "-chan")) { if (argc > i+1) { options->OutputChannels = get_channel_mask(argv[i+1]); options->OutputChannelsExplicitAssign = TRUE; i += 2; err = RM_OK; } else err = RM_ERROR; } else if (! strcmp(argv[i], "-ac3compmode")) { if (argc > i+1) { options->Ac3Params.CompMode = (enum Ac3CompMode_type)atoi(argv[i+1]); i+=2; err = RM_OK; } else err = RM_ERROR; } else if (! strcmp(argv[i], "-ac3dynhi")) { if (argc > i+1) { RMuint32 dynhi; sscanf((const char*)argv[i+1], (const char*)"0x%08lx", &dynhi); options->Ac3Params.DynScaleHi = dynhi; i += 2; err = RM_OK; } else err = RM_ERROR; } else if (! strcmp(argv[i], "-ac3dynlo")) { if (argc > i+1) { RMuint32 dynlo; sscanf((const char*)argv[i+1], (const char*)"0x%08lx", &dynlo); options->Ac3Params.DynScaleLo = dynlo; i += 2; err = RM_OK; } else err = RM_ERROR; } else if (! strcmp(argv[i], "-ac3pcmscale")) { if (argc > i+1) { RMuint32 PcmScale; sscanf((const char*)argv[i+1], (const char*)"0x%08lx", &PcmScale); options->Ac3Params.PcmScale = PcmScale; i += 2; err = RM_OK; } else err = RM_ERROR; } else if (! strcmp(argv[i], "-ttone_type")){ if(argc > i+1) { RMuint32 ttone_type; sscanf((const char*)argv[i+1], (const char*)"0x%lx", &ttone_type); options->TToneParams.TToneType = ttone_type; i += 2; err = RM_OK; } else err = RM_ERROR; } else if (! strcmp(argv[i], "-ttone_mask")){ if(argc > i+1) { RMuint32 ttone_chmask; sscanf((const char*)argv[i+1], (const char*)"0x%lx", &ttone_chmask); options->TToneParams.TToneChannelMask = ttone_chmask; i += 2; err = RM_OK; } else err = RM_ERROR; } else if (! strcmp(argv[i], "-c")) { if (argc > i+1) { if ( !(strcmp(argv[i+1], "auto"))) { options->auto_detect_codec = TRUE; RMDBGLOG((LOCALDBG, "\n\n\n\n\n********************** AUDIO CODEC: AUTO ***************\n\n\n\n")); } else if ( ! (strcmp(argv[i+1], "ac3")) || ! (strcmp(argv[i+1], "ac3_20"))) { options->Codec = AudioDecoder_Codec_AC3; options->Ac3Params.OutputChannels = Ac3_LR; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "ac3_32"))) { options->Codec = AudioDecoder_Codec_AC3; options->Ac3Params.OutputChannels = Ac3_LCRLsRs; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LCRLsRs; } else if ( ! (strcmp(argv[i+1], "ec3"))) { RMDBGLOG((LOCALDBG, "ec3 codec: will set codec to ac3 and use rmec3transcode lib\n")); options->Codec = AudioDecoder_Codec_AC3; options->Ac3Params.OutputChannels = Ac3_LR; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; options->transcode_ec3_to_ac3 = TRUE; } else if ( ! (strcmp(argv[i+1], "mpeg"))) { options->Codec = AudioDecoder_Codec_MPEG1; } else if ( ! (strcmp(argv[i+1], "aac0")) || ! (strcmp(argv[i+1], "aac0_20"))) { options->Codec = AudioDecoder_Codec_AAC; options->AACParams.InputFormat = 0; // adif, no sync word options->AACParams.OutputChannels = Aac_LR; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "aac0_32"))) { options->Codec = AudioDecoder_Codec_AAC; options->AACParams.InputFormat = 0; // adif, no sync word options->AACParams.OutputChannels = Aac_LCRLsRs; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LCRLsRs; } else if ( ! (strcmp(argv[i+1], "aac1")) || ! (strcmp(argv[i+1], "aac1_20"))) { options->Codec = AudioDecoder_Codec_AAC; options->AACParams.InputFormat = 1; // adts, with sync word per frame options->AACParams.OutputChannels = Aac_LR; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "aac1_32"))) { options->Codec = AudioDecoder_Codec_AAC; options->AACParams.InputFormat = 1; // adts, with sync word per frame options->AACParams.OutputChannels = Aac_LCRLsRs; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LCRLsRs; } else if ( ! (strcmp(argv[i+1], "aac2")) || ! (strcmp(argv[i+1], "aac2_20"))) { options->Codec = AudioDecoder_Codec_AAC; options->AACParams.InputFormat = 2; // dsi, no sync word options->AACParams.OutputChannels = Aac_LR; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "aac2_32"))) { options->Codec = AudioDecoder_Codec_AAC; options->AACParams.InputFormat = 2; // dsi, no sync word options->AACParams.OutputChannels = Aac_LCRLsRs; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LCRLsRs; } else if ( ! (strcmp(argv[i+1], "aac3")) || ! (strcmp(argv[i+1], "aac3_20"))) { options->Codec = AudioDecoder_Codec_AAC; options->AACParams.InputFormat = 3; // latm, with sync word per multi-frames options->AACParams.OutputChannels = Aac_LR; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "bsac"))) { options->Codec = AudioDecoder_Codec_BSAC; options->BSACParams.OutputChannels = Aac_LR; } else if ( ! (strcmp(argv[i+1], "pcm24")) || ! (strcmp(argv[i+1], "pcm24_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 0; options->PcmCdaParams.ChannelAssign = PcmCda2_LR; options->PcmCdaParams.BitsPerSample = 24; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "pcmx"))) { //pcmx codec, all information need to be written in header options->Codec = AudioDecoder_Codec_PCMX; } else if ( ! (strcmp(argv[i+1], "pcm24_6"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 0; options->PcmCdaParams.ChannelAssign = PcmCda6_LfRfCLfeLsRs; options->PcmCdaParams.BitsPerSample = 24; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LCRLsRs; } else if ( ! (strcmp(argv[i+1], "pcm16_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 0; options->PcmCdaParams.ChannelAssign = PcmCda2_LR; options->PcmCdaParams.BitsPerSample = 16; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "pcm16_1"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 0; options->PcmCdaParams.ChannelAssign = PcmCda1_C; options->PcmCdaParams.BitsPerSample = 16; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "pcm16_6"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 0; options->PcmCdaParams.ChannelAssign = PcmCda6_LfRfCLfeLsRs; options->PcmCdaParams.BitsPerSample = 16; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LCRLsRs; } else if ( ! (strcmp(argv[i+1], "pcm8_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 0; options->PcmCdaParams.ChannelAssign = PcmCda2_LR; options->PcmCdaParams.BitsPerSample = 8; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "pcm8_1"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 0; options->PcmCdaParams.ChannelAssign = PcmCda1_C; options->PcmCdaParams.BitsPerSample = 8; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "lpcm24")) || ! (strcmp(argv[i+1], "lpcm24_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 1; options->LpcmVobParams.ChannelAssign = LpcmVob2_LR; options->LpcmVobParams.BitsPerSample = 24; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "lpcm20")) || ! (strcmp(argv[i+1], "lpcm20_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 1; options->LpcmVobParams.ChannelAssign = LpcmVob2_LR; options->LpcmVobParams.BitsPerSample = 20; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "lpcm16")) || ! (strcmp(argv[i+1], "lpcm16_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 1; options->LpcmVobParams.ChannelAssign = LpcmVob2_LR; options->LpcmVobParams.BitsPerSample = 16; if (!options->OutputChannelsExplicitAssign) { options->OutputChannels = Audio_Out_Ch_LR; RMDBGLOG((LOCALDBG, ">>>>>>>>>>>>lpcm16_2 Cmdline Speaker Configure = %0x\n", options->OutputChannels)); } } else if ( ! (strcmp(argv[i+1], "lpcm16_1"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 1; options->LpcmVobParams.ChannelAssign = LpcmVob1_C; options->LpcmVobParams.BitsPerSample = 16; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "lpcma24")) || ! (strcmp(argv[i+1], "lpcma24_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 2; options->LpcmAobParams.ChannelAssign = LpcmAob20_LR; options->LpcmAobParams.BitsPerSampleGroup1 = 24; options->LpcmAobParams.BitsPerSampleGroup2 = 0; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "lpcma16_2"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 2; options->LpcmAobParams.ChannelAssign = LpcmAob20_LR; options->LpcmAobParams.BitsPerSampleGroup1 = 16; options->LpcmAobParams.BitsPerSampleGroup2 = 0; if (!options->OutputChannelsExplicitAssign) options->OutputChannels = Audio_Out_Ch_LR; } else if ( ! (strcmp(argv[i+1], "lpcma16_1"))) { options->Codec = AudioDecoder_Codec_PCM; options->SubCodec = 2; options->LpcmAobParams.ChannelAssign = LpcmAob10_C; options->LpcmAobParams.BitsPerSampleGroup1 = 16; options->LpcmAobParams.BitsPerSampleGroup2 = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -