From 18ee150d60a238fc5516df9279ca1a4f9f96297b Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 01:13:39 +0200 Subject: [PATCH] update audio streamtype --- libarmbox/audio.cpp | 53 ++++++++++++++++++++----------------------- libarmbox/audio_lib.h | 29 +++++++++++------------ 2 files changed, 39 insertions(+), 43 deletions(-) diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index d1170f9..7bae671 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -150,41 +150,36 @@ void cAudio::SetSyncMode(AVSYNC_TYPE Mode) ioctl(fd, AUDIO_SET_AV_SYNC, Mode); } -#define AUDIO_STREAMTYPE_AC3 0 -#define AUDIO_STREAMTYPE_MPEG 1 -#define AUDIO_STREAMTYPE_DTS 2 -#define AUDIO_STREAMTYPE_AAC 8 -#define AUDIO_STREAMTYPE_AACHE 9 - void cAudio::SetStreamType(AUDIO_FORMAT type) { - int bypass = AUDIO_STREAMTYPE_MPEG; - lt_debug("%s %d\n", __FUNCTION__, type); - StreamType = type; + const char *AF[] = { + "AUDIO_STREAMTYPE_AC3", + "AUDIO_STREAMTYPE_MPEG", + "AUDIO_STREAMTYPE_DTS", + "AUDIO_STREAMTYPE_LPCM", + "AUDIO_STREAMTYPE_AAC", + "AUDIO_STREAMTYPE_AAC_HE", + "AUDIO_STREAMTYPE_MP3", + "AUDIO_STREAMTYPE_AAC_PLUS", + "AUDIO_STREAMTYPE_DTS_HD", + "AUDIO_STREAMTYPE_WMA", + "AUDIO_STREAMTYPE_WMA_PRO", + "AUDIO_STREAMTYPE_AC3_PLUS", + "AUDIO_STREAMTYPE_AMR", + "AUDIO_STREAMTYPE_RAW" + }; - switch (type) + lt_info("%s - type=%s\n", __FUNCTION__, AF[type]); + + if (ioctl(fd, AUDIO_SET_BYPASS_MODE, type) < 0) { - case AUDIO_FMT_DD_PLUS: - case AUDIO_FMT_DOLBY_DIGITAL: - bypass = AUDIO_STREAMTYPE_AC3; - break; - case AUDIO_FMT_AAC: - bypass = AUDIO_STREAMTYPE_AAC; - break; - case AUDIO_FMT_AAC_PLUS: - bypass = AUDIO_STREAMTYPE_AACHE; - break; - case AUDIO_FMT_DTS: - bypass = AUDIO_STREAMTYPE_DTS; - break; - default: - break; + perror("AUDIO_SET_BYPASS_MODE"); + return; } - // Normaly the encoding should be set using AUDIO_SET_ENCODING - // But as we implemented the behavior to bypass (cause of e2) this is correct here - if (ioctl(fd, AUDIO_SET_BYPASS_MODE, bypass) < 0) - lt_info("%s: AUDIO_SET_BYPASS_MODE failed (%m)\n", __func__); + StreamType = type; + + return; } int cAudio::setChannel(int channel) diff --git a/libarmbox/audio_lib.h b/libarmbox/audio_lib.h index 1fb896f..2bcd073 100644 --- a/libarmbox/audio_lib.h +++ b/libarmbox/audio_lib.h @@ -20,20 +20,21 @@ typedef enum { typedef enum { - AUDIO_FMT_AUTO = 0, - AUDIO_FMT_MPEG, - AUDIO_FMT_MP3, - AUDIO_FMT_DOLBY_DIGITAL, - AUDIO_FMT_BASIC = AUDIO_FMT_DOLBY_DIGITAL, - AUDIO_FMT_AAC, - AUDIO_FMT_AAC_PLUS, - AUDIO_FMT_DD_PLUS, - AUDIO_FMT_DTS, - AUDIO_FMT_AVS, - AUDIO_FMT_MLP, - AUDIO_FMT_WMA, - AUDIO_FMT_MPG1, // TD only. For Movieplayer / cPlayback - AUDIO_FMT_ADVANCED = AUDIO_FMT_MLP + AUDIO_FMT_UNKNOWN = -1, + AUDIO_FMT_DOLBY_DIGITAL = 0, + AUDIO_FMT_MPEG = 1, + AUDIO_FMT_DTS = 2, + AUDIO_FMT_LPCM = 6, + AUDIO_FMT_AAC = 8, + AUDIO_FMT_AAC_HE = 9, + AUDIO_FMT_MP3 = 0xa, + AUDIO_FMT_AAC_PLUS = 0xb, + AUDIO_FMT_DTS_HD = 0x10, + AUDIO_FMT_WMA = 0x20, + AUDIO_FMT_WMA_PRO = 0x21, + AUDIO_FMT_DD_PLUS = 0x22, + AUDIO_FMT_AMR = 0x23, + AUDIO_FMT_RAW = 0xf } AUDIO_FORMAT; class mixerVolume;