Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorv0lt <v0lt@rambler.ru>2013-05-18 08:46:47 +0400
committerv0lt <v0lt@rambler.ru>2013-05-18 08:46:47 +0400
commit994119bd13f79759d8c6fc349a9baf070ca0dfe3 (patch)
treea12e86ece76632f0adefbe00f78013096bb5b9dd /src
parentb4c5355498cca2d90aa4fdbd760bfbca1993b35f (diff)
MpaDecFilter: added convert_int24_to_int32 function.
Diffstat (limited to 'src')
-rw-r--r--src/filters/transform/MpaDecFilter/AudioHelper.h9
-rw-r--r--src/filters/transform/MpaDecFilter/MpaDecFilter.cpp14
2 files changed, 12 insertions, 11 deletions
diff --git a/src/filters/transform/MpaDecFilter/AudioHelper.h b/src/filters/transform/MpaDecFilter/AudioHelper.h
index 41d0cd10e..1b5fd2031 100644
--- a/src/filters/transform/MpaDecFilter/AudioHelper.h
+++ b/src/filters/transform/MpaDecFilter/AudioHelper.h
@@ -52,3 +52,12 @@ HRESULT convert_to_int32(enum AVSampleFormat avsf, WORD nChannels, DWORD nSample
HRESULT convert_to_float(enum AVSampleFormat avsf, WORD nChannels, DWORD nSamples, BYTE* pIn, float* pOut);
HRESULT convert_to_planar_float(enum AVSampleFormat avsf, WORD nChannels, DWORD nSamples, BYTE* pIn, float* pOut);
+
+inline void convert_int24_to_int32(size_t allsamples, BYTE* pIn, int32_t* pOut)
+{
+ for (size_t i = 0; i < allsamples; ++i) {
+ pOut[i] = (uint32_t)pIn[3 * i] << 8 |
+ (uint32_t)pIn[3 * i + 1] << 16 |
+ (uint32_t)pIn[3 * i + 2] << 24;
+ }
+}
diff --git a/src/filters/transform/MpaDecFilter/MpaDecFilter.cpp b/src/filters/transform/MpaDecFilter/MpaDecFilter.cpp
index 4c235e65e..e347e791a 100644
--- a/src/filters/transform/MpaDecFilter/MpaDecFilter.cpp
+++ b/src/filters/transform/MpaDecFilter/MpaDecFilter.cpp
@@ -1266,18 +1266,10 @@ HRESULT CMpaDecFilter::ProcessPCMintLE() // 'sowt', little-endian 'in24' and 'in
out_avsf = AV_SAMPLE_FMT_S16;
memcpy(outBuff.GetData(), m_buff.GetData(), outSize);
break;
- case 24: { // signed little-endian 32-bit
+ case 24: // signed little-endian 32-bit
out_avsf = AV_SAMPLE_FMT_S32;
- uint8_t* pIn = (uint8_t*)m_buff.GetData();
- uint32_t* pOut = (uint32_t*)outBuff.GetData();
-
- for (size_t i = 0; i < nSamples; i++) {
- pOut[i] = (uint32_t)pIn[3 * i] << 8 |
- (uint32_t)pIn[3 * i + 1] << 16 |
- (uint32_t)pIn[3 * i + 2] << 24;
- }
- }
- break;
+ convert_int24_to_int32(nSamples, (uint8_t*)m_buff.GetData(), (int32_t*)outBuff.GetData());
+ break;
case 32: // signed little-endian 32-bit
out_avsf = AV_SAMPLE_FMT_S32;
memcpy(outBuff.GetData(), m_buff.GetData(), outSize);