1da853ecaSopenharmony_ci/* 2da853ecaSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 3da853ecaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4da853ecaSopenharmony_ci * you may not use this file except in compliance with the License. 5da853ecaSopenharmony_ci * You may obtain a copy of the License at 6da853ecaSopenharmony_ci * 7da853ecaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8da853ecaSopenharmony_ci * 9da853ecaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10da853ecaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11da853ecaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12da853ecaSopenharmony_ci * See the License for the specific language governing permissions and 13da853ecaSopenharmony_ci * limitations under the License. 14da853ecaSopenharmony_ci */ 15da853ecaSopenharmony_ci 16da853ecaSopenharmony_ci#include <climits> 17da853ecaSopenharmony_ci#include <iostream> 18da853ecaSopenharmony_ci#include <vector> 19da853ecaSopenharmony_ci#include "avmuxer_demo_runner.h" 20da853ecaSopenharmony_ci#include "avdemuxer_demo_runner.h" 21da853ecaSopenharmony_ci#include "avcodec_audio_decoder_inner_demo.h" 22da853ecaSopenharmony_ci#include "avcodec_audio_encoder_inner_demo.h" 23da853ecaSopenharmony_ci#include "avcodec_audio_decoder_demo.h" 24da853ecaSopenharmony_ci#include "avcodec_audio_aac_encoder_demo.h" 25da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_aac_encoder_demo.h" 26da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_amrnb_encoder_demo.h" 27da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_amrwb_encoder_demo.h" 28da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_decoder_inner_demo.h" 29da853ecaSopenharmony_ci#include "avcodec_audio_flac_encoder_demo.h" 30da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_flac_encoder_demo.h" 31da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_g711mu_encoder_demo.h" 32da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_mp3_encoder_demo.h" 33da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_lbvc_decoder_inner_demo.h" 34da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_lbvc_encoder_inner_demo.h" 35da853ecaSopenharmony_ci#include "avcodec_audio_opus_encoder_demo.h" 36da853ecaSopenharmony_ci#include "avcodec_audio_g711mu_encoder_demo.h" 37da853ecaSopenharmony_ci#include "codeclist_demo.h" 38da853ecaSopenharmony_ci#include "avcodec_video_decoder_demo.h" 39da853ecaSopenharmony_ci#include "avcodec_video_decoder_inner_demo.h" 40da853ecaSopenharmony_ci#include "avcodec_audio_avbuffer_decoder_demo.h" 41da853ecaSopenharmony_ci#include "avcodec_e2e_demo.h" 42da853ecaSopenharmony_ci#include "avcodec_e2e_demo_api10.h" 43da853ecaSopenharmony_ci 44da853ecaSopenharmony_ciusing namespace OHOS; 45da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec; 46da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioDemo; 47da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioBufferDemo; 48da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioFlacDemo; 49da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioFlacEncDemo; // AudioEncoderBufferDemo 50da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioOpusDemo; 51da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioG711muDemo; 52da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioAvbufferG711muDemo; 53da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioAvbufferMp3EncoderDemo; 54da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioAacDemo; 55da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioAacEncDemo; 56da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::InnerAudioDemo; 57da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::VideoDemo; 58da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::InnerVideoDemo; 59da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::E2EDemo; 60da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::InnerAudioDecoderLbvcDemo; 61da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::InnerAudioEncoderLbvcDemo; 62da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioAvbufferAmrNbDemo; 63da853ecaSopenharmony_ciusing namespace OHOS::MediaAVCodec::AudioAvbufferAmrWbDemo; 64da853ecaSopenharmony_ciusing namespace std; 65da853ecaSopenharmony_ci 66da853ecaSopenharmony_cistatic int RunAudioDecoder() 67da853ecaSopenharmony_ci{ 68da853ecaSopenharmony_ci cout << "Please select number for format (default AAC Decoder): " << endl; 69da853ecaSopenharmony_ci cout << "0: AAC" << endl; 70da853ecaSopenharmony_ci cout << "1: FLAC" << endl; 71da853ecaSopenharmony_ci cout << "2: MP3" << endl; 72da853ecaSopenharmony_ci cout << "3: VORBIS" << endl; 73da853ecaSopenharmony_ci cout << "4: AMRNB" << endl; 74da853ecaSopenharmony_ci cout << "5: AMRWB" << endl; 75da853ecaSopenharmony_ci cout << "6: OPUS" << endl; 76da853ecaSopenharmony_ci cout << "7: G711MU" << endl; 77da853ecaSopenharmony_ci string mode; 78da853ecaSopenharmony_ci AudioFormatType audioFormatType = TYPE_AAC; 79da853ecaSopenharmony_ci (void)getline(cin, mode); 80da853ecaSopenharmony_ci if (mode == "" || mode == "0") { 81da853ecaSopenharmony_ci audioFormatType = TYPE_AAC; 82da853ecaSopenharmony_ci } else if (mode == "1") { 83da853ecaSopenharmony_ci audioFormatType = TYPE_FLAC; 84da853ecaSopenharmony_ci } else if (mode == "2") { 85da853ecaSopenharmony_ci audioFormatType = TYPE_MP3; 86da853ecaSopenharmony_ci } else if (mode == "3") { 87da853ecaSopenharmony_ci audioFormatType = TYPE_VORBIS; 88da853ecaSopenharmony_ci } else if (mode == "4") { 89da853ecaSopenharmony_ci audioFormatType = TYPE_AMRNB; 90da853ecaSopenharmony_ci } else if (mode == "5") { 91da853ecaSopenharmony_ci audioFormatType = TYPE_AMRWB; 92da853ecaSopenharmony_ci } else if (mode == "6") { 93da853ecaSopenharmony_ci audioFormatType = TYPE_OPUS; 94da853ecaSopenharmony_ci } else if (mode == "7") { 95da853ecaSopenharmony_ci audioFormatType = TYPE_G711MU; 96da853ecaSopenharmony_ci } else { 97da853ecaSopenharmony_ci cout << "no that selection" << endl; 98da853ecaSopenharmony_ci return 0; 99da853ecaSopenharmony_ci } 100da853ecaSopenharmony_ci auto audioDec = std::make_unique<ADecDemo>(); 101da853ecaSopenharmony_ci audioDec->RunCase(audioFormatType); 102da853ecaSopenharmony_ci cout << "demo audio decoder end" << endl; 103da853ecaSopenharmony_ci return 0; 104da853ecaSopenharmony_ci} 105da853ecaSopenharmony_ci 106da853ecaSopenharmony_cistatic int RunAudioAVBufferDecoder() 107da853ecaSopenharmony_ci{ 108da853ecaSopenharmony_ci cout << "Please select number for format (default AAC Decoder): " << endl; 109da853ecaSopenharmony_ci cout << "0: AAC" << endl; 110da853ecaSopenharmony_ci cout << "1: FLAC" << endl; 111da853ecaSopenharmony_ci cout << "2: MP3" << endl; 112da853ecaSopenharmony_ci cout << "3: VORBIS" << endl; 113da853ecaSopenharmony_ci cout << "4: AMR-NB" << endl; 114da853ecaSopenharmony_ci cout << "5: AMR-WB" << endl; 115da853ecaSopenharmony_ci cout << "6: G711MU" << endl; 116da853ecaSopenharmony_ci cout << "7: APE" << endl; 117da853ecaSopenharmony_ci 118da853ecaSopenharmony_ci string mode; 119da853ecaSopenharmony_ci AudioBufferFormatType audioFormatType = AudioBufferFormatType::TYPE_AAC; 120da853ecaSopenharmony_ci (void)getline(cin, mode); 121da853ecaSopenharmony_ci if (mode == "" || mode == "0") { 122da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_AAC; 123da853ecaSopenharmony_ci } else if (mode == "1") { 124da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_FLAC; 125da853ecaSopenharmony_ci } else if (mode == "2") { 126da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_MP3; 127da853ecaSopenharmony_ci } else if (mode == "3") { 128da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_VORBIS; 129da853ecaSopenharmony_ci } else if (mode == "4") { 130da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_AMRNB; 131da853ecaSopenharmony_ci } else if (mode == "5") { 132da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_AMRWB; 133da853ecaSopenharmony_ci } else if (mode == "6") { 134da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_G711MU; 135da853ecaSopenharmony_ci } else if (mode == "7") { 136da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_APE; 137da853ecaSopenharmony_ci } else { 138da853ecaSopenharmony_ci cout << "no that selection" << endl; 139da853ecaSopenharmony_ci return 0; 140da853ecaSopenharmony_ci } 141da853ecaSopenharmony_ci auto audioDec = std::make_unique<ADecBufferDemo>(); 142da853ecaSopenharmony_ci audioDec->RunCase(audioFormatType); 143da853ecaSopenharmony_ci cout << "demo audio decoder end" << endl; 144da853ecaSopenharmony_ci return 0; 145da853ecaSopenharmony_ci} 146da853ecaSopenharmony_ci 147da853ecaSopenharmony_cistatic int RunAudioAVBufferDecoderDrm() 148da853ecaSopenharmony_ci{ 149da853ecaSopenharmony_ci cout << "RunAudioAVBufferDecoderDrm" << endl; 150da853ecaSopenharmony_ci cout << "Please select number for format (default AAC Decoder): " << endl; 151da853ecaSopenharmony_ci cout << "0: AAC" << endl; 152da853ecaSopenharmony_ci cout << "1: FLAC" << endl; 153da853ecaSopenharmony_ci cout << "2: MP3" << endl; 154da853ecaSopenharmony_ci 155da853ecaSopenharmony_ci string mode; 156da853ecaSopenharmony_ci AudioBufferFormatType audioFormatType = AudioBufferFormatType::TYPE_AAC; 157da853ecaSopenharmony_ci (void)getline(cin, mode); 158da853ecaSopenharmony_ci if (mode == "" || mode == "0") { 159da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_AAC; 160da853ecaSopenharmony_ci } else if (mode == "1") { 161da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_FLAC; 162da853ecaSopenharmony_ci } else if (mode == "2") { 163da853ecaSopenharmony_ci audioFormatType = AudioBufferFormatType::TYPE_MP3; 164da853ecaSopenharmony_ci } else { 165da853ecaSopenharmony_ci cout << "no that selection" << endl; 166da853ecaSopenharmony_ci return 0; 167da853ecaSopenharmony_ci } 168da853ecaSopenharmony_ci auto audioDec = std::make_unique<ADecBufferDemo>(); 169da853ecaSopenharmony_ci audioDec->RunDrmCase(audioFormatType); 170da853ecaSopenharmony_ci cout << "demo audio decoder end" << endl; 171da853ecaSopenharmony_ci return 0; 172da853ecaSopenharmony_ci} 173da853ecaSopenharmony_ci 174da853ecaSopenharmony_cistatic int RunAudioEncoder() 175da853ecaSopenharmony_ci{ 176da853ecaSopenharmony_ci cout << "Please select number for format (default AAC Encoder): " << endl; 177da853ecaSopenharmony_ci cout << "0: AAC\n" << "1: FLAC" << endl; 178da853ecaSopenharmony_ci cout << "2: OPUS" << endl; 179da853ecaSopenharmony_ci cout << "3: G711MU" << endl; 180da853ecaSopenharmony_ci cout << "4: AAC-API11" << endl; 181da853ecaSopenharmony_ci cout << "5: FLAC-API11" << endl; 182da853ecaSopenharmony_ci cout << "6: G711MU-API11" << endl; 183da853ecaSopenharmony_ci cout << "7: AMR-NB-API11" << endl; 184da853ecaSopenharmony_ci cout << "8: AMR-WB-API11" << endl; 185da853ecaSopenharmony_ci cout << "9: MP3-API11" << endl; 186da853ecaSopenharmony_ci string mode; 187da853ecaSopenharmony_ci (void)getline(cin, mode); 188da853ecaSopenharmony_ci if (mode == "" || mode == "0") { 189da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncAacDemo>(); 190da853ecaSopenharmony_ci audioEnc->RunCase(); 191da853ecaSopenharmony_ci } else if (mode == "1") { 192da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncFlacDemo>(); 193da853ecaSopenharmony_ci audioEnc->RunCase(); 194da853ecaSopenharmony_ci } else if (mode == "2") { 195da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncOpusDemo>(); 196da853ecaSopenharmony_ci audioEnc->RunCase(); 197da853ecaSopenharmony_ci } else if (mode == "3") { 198da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncG711muDemo>(); 199da853ecaSopenharmony_ci audioEnc->RunCase(); 200da853ecaSopenharmony_ci } else if (mode == "4") { 201da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AudioBufferAacEncDemo>(); 202da853ecaSopenharmony_ci audioEnc->RunCase(); 203da853ecaSopenharmony_ci } else if (mode == "5") { 204da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AudioBufferFlacEncDemo>(); 205da853ecaSopenharmony_ci audioEnc->RunCase(); 206da853ecaSopenharmony_ci } else if (mode == "6") { 207da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncAvbufferG711muDemo>(); 208da853ecaSopenharmony_ci audioEnc->RunCase(); 209da853ecaSopenharmony_ci } else if (mode == "7") { 210da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncAvbufferAmrNbDemo>(); 211da853ecaSopenharmony_ci audioEnc->RunCase(); 212da853ecaSopenharmony_ci } else if (mode == "8") { 213da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncAvbufferAmrWbDemo>(); 214da853ecaSopenharmony_ci audioEnc->RunCase(); 215da853ecaSopenharmony_ci } else if (mode == "9") { 216da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEncAvbufferMp3Demo>(); 217da853ecaSopenharmony_ci audioEnc->RunCase(); 218da853ecaSopenharmony_ci } else { 219da853ecaSopenharmony_ci cout << "no that selection" << endl; 220da853ecaSopenharmony_ci return 0; 221da853ecaSopenharmony_ci } 222da853ecaSopenharmony_ci cout << "demo audio encoder end" << endl; 223da853ecaSopenharmony_ci return 0; 224da853ecaSopenharmony_ci} 225da853ecaSopenharmony_ci 226da853ecaSopenharmony_cistatic int RunAudioInnerDecoder() 227da853ecaSopenharmony_ci{ 228da853ecaSopenharmony_ci cout << "Please select number for format (default AAC Decoder): " << endl; 229da853ecaSopenharmony_ci cout << "0: AAC" << endl; 230da853ecaSopenharmony_ci cout << "1: FLAC" << endl; 231da853ecaSopenharmony_ci cout << "2: MP3" << endl; 232da853ecaSopenharmony_ci cout << "3: VORBIS" << endl; 233da853ecaSopenharmony_ci cout << "4: DecoderInner-API11" << endl; 234da853ecaSopenharmony_ci cout << "5: LBVC" << endl; 235da853ecaSopenharmony_ci string mode; 236da853ecaSopenharmony_ci (void)getline(cin, mode); 237da853ecaSopenharmony_ci if (mode == "" || mode == "0") { 238da853ecaSopenharmony_ci auto audioDec = std::make_unique<ADecInnerDemo>(); 239da853ecaSopenharmony_ci audioDec->RunCase(); 240da853ecaSopenharmony_ci } else if (mode == "1") { 241da853ecaSopenharmony_ci auto audioDec = std::make_unique<ADecInnerDemo>(); 242da853ecaSopenharmony_ci audioDec->RunCase(); 243da853ecaSopenharmony_ci } else if (mode == "2") { 244da853ecaSopenharmony_ci auto audioDec = std::make_unique<ADecInnerDemo>(); 245da853ecaSopenharmony_ci audioDec->RunCase(); 246da853ecaSopenharmony_ci } else if (mode == "3") { 247da853ecaSopenharmony_ci auto audioDec = std::make_unique<ADecInnerDemo>(); 248da853ecaSopenharmony_ci audioDec->RunCase(); 249da853ecaSopenharmony_ci } else if (mode == "4") { 250da853ecaSopenharmony_ci auto audioDec = std::make_unique<AudioDecInnerAvBufferDemo>(); 251da853ecaSopenharmony_ci audioDec->RunCase(); 252da853ecaSopenharmony_ci } else if (mode == "5") { 253da853ecaSopenharmony_ci auto audioDec = std::make_unique<AudioDecInnerAvBufferLbvcDemo>(); 254da853ecaSopenharmony_ci audioDec->RunCase(); 255da853ecaSopenharmony_ci } else { 256da853ecaSopenharmony_ci cout << "no that selection" << endl; 257da853ecaSopenharmony_ci return 0; 258da853ecaSopenharmony_ci } 259da853ecaSopenharmony_ci cout << "demo audio decoder end" << endl; 260da853ecaSopenharmony_ci return 0; 261da853ecaSopenharmony_ci} 262da853ecaSopenharmony_ci 263da853ecaSopenharmony_cistatic int RunAudioInnerEncoder() 264da853ecaSopenharmony_ci{ 265da853ecaSopenharmony_ci cout << "Please select number for format (default AAC Encoder): " << endl; 266da853ecaSopenharmony_ci cout << "0: AAC" << endl; 267da853ecaSopenharmony_ci cout << "1: FLAC" << endl; 268da853ecaSopenharmony_ci cout << "2: LBVC" << endl; 269da853ecaSopenharmony_ci string mode; 270da853ecaSopenharmony_ci (void)getline(cin, mode); 271da853ecaSopenharmony_ci if (mode == "" || mode == "0") { 272da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEnInnerDemo>(); 273da853ecaSopenharmony_ci audioEnc->RunCase(); 274da853ecaSopenharmony_ci } else if (mode == "1") { 275da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AEnInnerDemo>(); 276da853ecaSopenharmony_ci audioEnc->RunCase(); 277da853ecaSopenharmony_ci } else if (mode == "2") { 278da853ecaSopenharmony_ci auto audioEnc = std::make_unique<AudioEncInnerAvBufferLbvcDemo>(); 279da853ecaSopenharmony_ci audioEnc->RunCase(); 280da853ecaSopenharmony_ci } else { 281da853ecaSopenharmony_ci cout << "no that selection" << endl; 282da853ecaSopenharmony_ci return 0; 283da853ecaSopenharmony_ci } 284da853ecaSopenharmony_ci cout << "demo audio encoder end" << endl; 285da853ecaSopenharmony_ci return 0; 286da853ecaSopenharmony_ci} 287da853ecaSopenharmony_ci 288da853ecaSopenharmony_cistatic int RunCodecList() 289da853ecaSopenharmony_ci{ 290da853ecaSopenharmony_ci auto codecList = std::make_unique<CodecListDemo>(); 291da853ecaSopenharmony_ci if (codecList == nullptr) { 292da853ecaSopenharmony_ci cout << "codec list is null" << endl; 293da853ecaSopenharmony_ci return 0; 294da853ecaSopenharmony_ci } 295da853ecaSopenharmony_ci codecList->RunCase(); 296da853ecaSopenharmony_ci cout << "codec list end" << endl; 297da853ecaSopenharmony_ci return 0; 298da853ecaSopenharmony_ci} 299da853ecaSopenharmony_ci 300da853ecaSopenharmony_cistatic int RunVideoDecoder() 301da853ecaSopenharmony_ci{ 302da853ecaSopenharmony_ci cout << "Please select number for output mode (default buffer mode): " << endl; 303da853ecaSopenharmony_ci cout << "0: buffer" << endl; 304da853ecaSopenharmony_ci cout << "1: surface file" << endl; 305da853ecaSopenharmony_ci cout << "2: surface render" << endl; 306da853ecaSopenharmony_ci cout << "3: switch surface" << endl; 307da853ecaSopenharmony_ci 308da853ecaSopenharmony_ci string mode; 309da853ecaSopenharmony_ci (void)getline(cin, mode); 310da853ecaSopenharmony_ci if (mode != "0" && mode != "1" && mode != "2" && mode != "3") { 311da853ecaSopenharmony_ci cout << "parameter invalid" << endl; 312da853ecaSopenharmony_ci return 0; 313da853ecaSopenharmony_ci } 314da853ecaSopenharmony_ci 315da853ecaSopenharmony_ci auto videoDec = std::make_unique<VDecDemo>(); 316da853ecaSopenharmony_ci if (videoDec == nullptr) { 317da853ecaSopenharmony_ci cout << "video decoder is null" << endl; 318da853ecaSopenharmony_ci return 0; 319da853ecaSopenharmony_ci } 320da853ecaSopenharmony_ci videoDec->RunCase(mode); 321da853ecaSopenharmony_ci cout << "demo video decoder end" << endl; 322da853ecaSopenharmony_ci return 0; 323da853ecaSopenharmony_ci} 324da853ecaSopenharmony_ci 325da853ecaSopenharmony_cistatic int RunVideoDecoderDrm() 326da853ecaSopenharmony_ci{ 327da853ecaSopenharmony_ci cout << "RunVideoDecoderDrm: " << endl; 328da853ecaSopenharmony_ci cout << "Please select number for output mode (default buffer mode): " << endl; 329da853ecaSopenharmony_ci cout << "0: buffer" << endl; 330da853ecaSopenharmony_ci cout << "1: surface file" << endl; 331da853ecaSopenharmony_ci cout << "2: surface render" << endl; 332da853ecaSopenharmony_ci 333da853ecaSopenharmony_ci string mode; 334da853ecaSopenharmony_ci (void)getline(cin, mode); 335da853ecaSopenharmony_ci if (mode != "0" && mode != "1" && mode != "2") { 336da853ecaSopenharmony_ci cout << "parameter invalid" << endl; 337da853ecaSopenharmony_ci return 0; 338da853ecaSopenharmony_ci } 339da853ecaSopenharmony_ci 340da853ecaSopenharmony_ci auto videoDec = std::make_unique<VDecDemo>(); 341da853ecaSopenharmony_ci if (videoDec == nullptr) { 342da853ecaSopenharmony_ci cout << "video decoder is null" << endl; 343da853ecaSopenharmony_ci return 0; 344da853ecaSopenharmony_ci } 345da853ecaSopenharmony_ci videoDec->RunDrmCase(); 346da853ecaSopenharmony_ci cout << "demo video decoder end" << endl; 347da853ecaSopenharmony_ci return 0; 348da853ecaSopenharmony_ci} 349da853ecaSopenharmony_ci 350da853ecaSopenharmony_cistatic int RunVideoInnerDecoder() 351da853ecaSopenharmony_ci{ 352da853ecaSopenharmony_ci cout << "Please select number for output mode (default buffer mode): " << endl; 353da853ecaSopenharmony_ci cout << "0: buffer" << endl; 354da853ecaSopenharmony_ci cout << "1: surface file" << endl; 355da853ecaSopenharmony_ci cout << "2: surface render" << endl; 356da853ecaSopenharmony_ci 357da853ecaSopenharmony_ci string mode; 358da853ecaSopenharmony_ci (void)getline(cin, mode); 359da853ecaSopenharmony_ci if (mode != "0" && mode != "1" && mode != "2") { 360da853ecaSopenharmony_ci cout << "parameter invalid" << endl; 361da853ecaSopenharmony_ci return 0; 362da853ecaSopenharmony_ci } 363da853ecaSopenharmony_ci 364da853ecaSopenharmony_ci auto videoDec = std::make_unique<VDecInnerDemo>(); 365da853ecaSopenharmony_ci if (videoDec == nullptr) { 366da853ecaSopenharmony_ci cout << "video decoder is null" << endl; 367da853ecaSopenharmony_ci return 0; 368da853ecaSopenharmony_ci } 369da853ecaSopenharmony_ci videoDec->RunCase(mode); 370da853ecaSopenharmony_ci cout << "demo video decoder end" << endl; 371da853ecaSopenharmony_ci return 0; 372da853ecaSopenharmony_ci} 373da853ecaSopenharmony_ci 374da853ecaSopenharmony_cistatic int RunE2EDemo() 375da853ecaSopenharmony_ci{ 376da853ecaSopenharmony_ci cout << "Please select number for api version (default api11): " << endl; 377da853ecaSopenharmony_ci cout << "0: api11" << endl; 378da853ecaSopenharmony_ci cout << "1: api10" << endl; 379da853ecaSopenharmony_ci 380da853ecaSopenharmony_ci string mode; 381da853ecaSopenharmony_ci (void)getline(cin, mode); 382da853ecaSopenharmony_ci if (mode != "0" && mode != "1") { 383da853ecaSopenharmony_ci cout << "parameter invalid" << endl; 384da853ecaSopenharmony_ci return 0; 385da853ecaSopenharmony_ci } 386da853ecaSopenharmony_ci const char *path = "/data/test/media/input.mp4"; 387da853ecaSopenharmony_ci if (mode == "0") { 388da853ecaSopenharmony_ci auto e2eDemo = std::make_unique<AVCodecE2EDemo>(path); 389da853ecaSopenharmony_ci if (e2eDemo == nullptr) { 390da853ecaSopenharmony_ci cout << "e2eDemo is null" << endl; 391da853ecaSopenharmony_ci return 0; 392da853ecaSopenharmony_ci } 393da853ecaSopenharmony_ci e2eDemo->Configure(); 394da853ecaSopenharmony_ci e2eDemo->Start(); 395da853ecaSopenharmony_ci e2eDemo->WaitForEOS(); 396da853ecaSopenharmony_ci e2eDemo->Stop(); 397da853ecaSopenharmony_ci } else if (mode == "1") { 398da853ecaSopenharmony_ci auto e2eDemo = std::make_unique<AVCodecE2EDemoAPI10>(path); 399da853ecaSopenharmony_ci if (e2eDemo == nullptr) { 400da853ecaSopenharmony_ci cout << "e2eDemo is null" << endl; 401da853ecaSopenharmony_ci return 0; 402da853ecaSopenharmony_ci } 403da853ecaSopenharmony_ci e2eDemo->Configure(); 404da853ecaSopenharmony_ci e2eDemo->Start(); 405da853ecaSopenharmony_ci e2eDemo->WaitForEOS(); 406da853ecaSopenharmony_ci e2eDemo->Stop(); 407da853ecaSopenharmony_ci } 408da853ecaSopenharmony_ci cout << "e2eDemo end" << endl; 409da853ecaSopenharmony_ci return 0; 410da853ecaSopenharmony_ci} 411da853ecaSopenharmony_ci 412da853ecaSopenharmony_cistatic void OptionPrint() 413da853ecaSopenharmony_ci{ 414da853ecaSopenharmony_ci cout << "Please select a demo scenario number(default Audio Decoder): " << endl; 415da853ecaSopenharmony_ci cout << "0:Audio Decoder" << endl; 416da853ecaSopenharmony_ci cout << "1:Audio Encoder" << endl; 417da853ecaSopenharmony_ci cout << "2:Audio Inner Decoder" << endl; 418da853ecaSopenharmony_ci cout << "3:Audio Inner Encoder" << endl; 419da853ecaSopenharmony_ci cout << "4:muxer demo" << endl; 420da853ecaSopenharmony_ci cout << "6:codeclist" << endl; 421da853ecaSopenharmony_ci cout << "7:Video Decoder" << endl; 422da853ecaSopenharmony_ci cout << "8:Video Inner Decoder" << endl; 423da853ecaSopenharmony_ci cout << "9:demuxer demo" << endl; 424da853ecaSopenharmony_ci cout << "10:Audio AVBuffer Decoder" << endl; 425da853ecaSopenharmony_ci cout << "11:Video Decoder DRM" << endl; 426da853ecaSopenharmony_ci cout << "12:E2E demo" << endl; 427da853ecaSopenharmony_ci cout << "13:Audio AVBuffer Decoder with DRM" << endl; 428da853ecaSopenharmony_ci} 429da853ecaSopenharmony_ci 430da853ecaSopenharmony_ciint main() 431da853ecaSopenharmony_ci{ 432da853ecaSopenharmony_ci OptionPrint(); 433da853ecaSopenharmony_ci string mode; 434da853ecaSopenharmony_ci (void)getline(cin, mode); 435da853ecaSopenharmony_ci if (mode == "" || mode == "0") { 436da853ecaSopenharmony_ci (void)RunAudioDecoder(); 437da853ecaSopenharmony_ci } else if (mode == "1") { 438da853ecaSopenharmony_ci (void)RunAudioEncoder(); 439da853ecaSopenharmony_ci } else if (mode == "2") { 440da853ecaSopenharmony_ci (void)RunAudioInnerDecoder(); 441da853ecaSopenharmony_ci } else if (mode == "3") { 442da853ecaSopenharmony_ci (void)RunAudioInnerEncoder(); 443da853ecaSopenharmony_ci } else if (mode == "4") { 444da853ecaSopenharmony_ci (void)AVMuxerDemoCase(); 445da853ecaSopenharmony_ci } else if (mode == "6") { 446da853ecaSopenharmony_ci (void)RunCodecList(); 447da853ecaSopenharmony_ci } else if (mode == "7") { 448da853ecaSopenharmony_ci (void)RunVideoDecoder(); 449da853ecaSopenharmony_ci } else if (mode == "8") { 450da853ecaSopenharmony_ci (void)RunVideoInnerDecoder(); 451da853ecaSopenharmony_ci } else if (mode == "9") { 452da853ecaSopenharmony_ci (void)AVSourceDemuxerDemoCase(); 453da853ecaSopenharmony_ci } else if (mode == "10") { 454da853ecaSopenharmony_ci (void)RunAudioAVBufferDecoder(); 455da853ecaSopenharmony_ci } else if (mode == "11") { 456da853ecaSopenharmony_ci (void)RunVideoDecoderDrm(); 457da853ecaSopenharmony_ci } else if (mode == "12") { 458da853ecaSopenharmony_ci (void)RunE2EDemo(); 459da853ecaSopenharmony_ci } else if (mode == "13") { 460da853ecaSopenharmony_ci (void)RunAudioAVBufferDecoderDrm(); 461da853ecaSopenharmony_ci } else { 462da853ecaSopenharmony_ci cout << "no that selection" << endl; 463da853ecaSopenharmony_ci } 464da853ecaSopenharmony_ci return 0; 465da853ecaSopenharmony_ci} 466