2017-01-26 1 views
0

내 질문에 기본적으로이 프레임 워크와 새로운 기능이 있습니다. 미디어 기초가 아닌 파일 소스를 사용하는 방법에 대한 지침을 찾고 있습니다. 앞이 내 마음에 부족한 것 같습니다. 아래는 내가하고있는 일과 내가 지금하고있는 접근법에 대한 정보이지만 프레임 워크를 사용하는 올바른 방법인지는 모른다.Microsoft Media Foundation이 아닌 파일 소스의 오디오 디코딩

저는 현재 Microsoft Media Foundation을 사용하여 Bluetooth를 통해 오디오를 디코딩 한 다음 PCM 오디오로 보내려고합니다. ms 미디어 재단의 문서를 보면 거의 모든 예제에서 소스가 파일이라고 가정합니다.

예를 들어, tutorial for decoding audio에서 보면 MFCreateSourceReaderFromURL을 사용합니다. 원본은 파일이 아니기 때문에 사용할 수 없습니다.

내가 튜토리얼을 따르고 가능한 한 변경하고 싶지 않았기 때문에 나는 소스 리더를 만드는 방법과 프로세스의 나머지 부분을 변경해야한다고 생각했다. 내 다른 목적으로는 다른 SourceReaders availableMFCreateSourceReaderFromByteStream 소리를 보았습니다.

내가 바이트 스트림을 작성하고 계속해서 데이터를 채울 필요가있는 기회가 있습니까? MFCreateSourceReaderFromByteStream으로 작성된 미디어 소스가 이것을 잘 처리 할 수 ​​있습니까? 또는 맞춤 미디어 소스를 만들고 API의 하위 부분에서 수동 작업을 수행해야합니다.

소스가 파일이 아닐 때 소스 리더가 잘못된 접근 방식 일 수 있습니까?

Image describing what a Source Reader is

그리고 단순히이 그림 만 소스 파일을 가리키는 소스 리더 내 미디어 소스를 보여줍니다이 실제 제한 또는 예 : 소스 리더 here에서는 다음과 같은 그림이 약 메인 페이지에서 ?

Im을 plain c로 작성했지만 C++ 문서 나 예제를 가리키는 것은 괜찮습니다. 일반적으로 C++를 c로 변환하는 것이 매우 쉽고 어쨌든 c에 대한 문서가없는 것 같습니다.

편집 : 임 데이터 임 어떤 종류의 점점에 이미지를 추가, 내가 Source 아래의 의견을 참조 데이터의 덩어리 인 빨간색 영역입니다. enter image description here

+0

오디오 소스에 어떤 종류의 장치가 있습니까? 아니면 메모리에 많은 양의 데이터가 있습니까? –

+0

해당 장치는 항상 Iphone (MPEG4 LATM AAC 오디오)입니다.데이터는 청크로 나에게 보내지는데, 시간이 없으면 전체 데이터에 액세스 할 수 있으며, 부분적으로 나에게 스트리밍된다. –

+0

로마가 옳습니다. 원본이 저장소에 저장되지 않는다고해서 많은 의미가있는 것은 아니며 종종 동일한 구조의 메모리에 시간이 전달됩니다. 이 구조화 된 컨테이너는 전달되는 스트림의 유형 및 수를 결정할 때 유용합니다. 그것 없이는, 그것을 제공하기 위해 다른 유형의 헤더가 있어야합니다 (만약 그것이 제거 된 것이 아니라면 그 형식을 취해야 만합니다). – Jeff

답변

1

파일이 아닌 원본은 정확한 설명이 아닙니다. 파일 구조가 있습니까, 파일이 아닙니다. 다르게 구조화 되었습니까? 원시 스트림?

원본 판독기가있는 샘플을 보면, 알려진 유형 및 특성을 가진 기본 스트림으로 들어오는 스트림을 구문 분석 할 수있는 스트림 처리기의 존재와 사용을 전제로합니다. 그런 다음 귀하 또는 미디어 재단은 디코더를 적용하거나 데이터를 변환 할 수 있습니다.

"청크"로 데이터를 지정 했으므로 대부분 AAC Decoder을 명시 적으로 사용하는 대체 옵션에 관심이 많습니다. 인스턴스를 생성하고 입력 및 출력 유형을 초기화 한 다음 압축 된 오디오로 피드를 보내고 디코딩 된 PCM을 출력에 가져올 수 있습니다. 디코더에는 MFT 인터페이스가 있습니다.

+0

그 점에 대해서는 명확하지 않았고, 제 질문에 더 많은 정보를 추가했습니다. 예 나는 소스 리더를 사용하는 것이 내 경우에 직면하지 않는 것으로 나타났습니다. AAC 디코더를 사용하는 것이 훨씬 좋은 아이디어처럼 들립니다. [이] (https://msdn.microsoft.com/en-us/library/windows/desktop/ff485864(v=vs.85).aspx)와 같은 것이 있습니까? –

+0

미디어 유형도 처리해야 할 것입니다. 사용할 기본 인터페이스는 'IMFTransform'입니다. 시작부터 지저분 해 보일지 모르지만이 디코더를 직접 사용하는 것은 사실 상당히 합리적인 작업입니다. –

관련 문제