3

저는 화상 회의 프로젝트를 진행하고 있습니다. 우리는 낮은 해상도 (최대 320p)를 위해 잘 될 비디오 프레임의 인코딩 및 디코딩을 위해 소프트웨어 코덱을 사용하고있었습니다. 우리는 최대 720p의 고해상도에 대한 우리의 지원을 지원할 계획입니다. 하드웨어 가속이이 작업을 상당히 잘 수행 할 것임을 알게되었습니다.Jelly Bean 이전의 H.264 용 하드웨어 가속 비디오 디코드

하드웨어 코덱 인 api Media 코덱은 이후 Jelly Bean에서 사용할 수 있으므로 인코딩 및 디코딩에 사용하여 정상적으로 작동합니다. 그러나 내 응용 프로그램은 2.3에서 지원됩니다. 그래서 하드웨어 가속 비디오 디코딩을 30fps에서 720p의 H.264 프레임에 사용해야합니다. 연구에

3.0에서이 framework.I은 H.264의 하드웨어 디코더가 2.1 인코더에서 사용할 수 있음을 읽은 무대 공포증을 수정하여 OMX 코덱을 사용하는 아이디어를 가로 질러왔다. 나는이 사이트에서 제공되는 많은 기사와 질문을 거쳤으며 앞으로 나아갈 수 있다는 것을 확인했다.

나는 무대 공포증 아키텍처 here -architecturehere- stagefright how it works

읽었던 그리고 OMX 코덱 here- use-android-hardware-decoder-with-omxcodec-in-ndk 읽어보십시오.

시작 문제가 있으며 구현에 약간의 혼란이 있습니다. 이에 대한 정보가 있습니다.

  1. 내 코드에서 OMX 코덱을 사용하려면 전체 안드로이드 소스 트리로 프로젝트를 빌드해야합니까? 아니면 AOSP 소스에서 일부 파일을 추가하여 할 수 있습니까?
  2. 달성하기 위해 따라야 할 단계는 무엇입니까?

누군가가 나에게이

감사에 대한 가이드 라인 ...

+2

_ "달성하기 위해 따라야 할 단계는 무엇입니까?"_는 실제로 매우 광범위합니다. 단일 StackOverflow 질문의 경우 범위를 상당히 좁혀 야합니다.예를 들어, _ 특정 _ 식별 단계는 수행하는 방법에 대해 필요하지만 불확실하다고 느끼는 단계입니다. 그런 다음 그것에 대해 질문하십시오. – Michael

+0

@ 마이클 좋아요. 하지만 내 첫 번째 질문을 확인하실 수 있습니다 .. 안드로이드의 전체 소스 코드를 받아야합니까. –

+0

@androkid ..'Java' 레이어에서 코덱에 액세스해야합니까, 아니면 응용 프로그램의'JNI' 구현에 의해 추상화 된 네이티브 레이어의 코덱에 액세스하는 것으로 충분합니까? – Ganesh

답변

5

가장 좋은 예를 들어 기본 계층의 OMXCodec의 통합을 설명하는가에 here을 관찰 할 수있는 명령 행 유틸리티 stagefright입니다 줄 수 GingerBread 그 자체. 이 예는 어떻게 OMXCodec is created을 보여줍니다.

  1. OMXCodec에 입력이 MediaSource으로 모델링되어야하며, 따라서, 당신은 당신의 응용 프로그램이 요구 사항을 처리하도록해야합니다

    노트 할 몇 가지. MediaSource 기반의 소스를 작성하는 예는 record utility file as DummySource에서 찾을 수 있습니다.

  2. 디코더 입력 (MediaSource)은 read 메서드를 통해 데이터를 제공해야하므로 응용 프로그램은 read 호출마다 개별 프레임을 제공해야합니다.

  3. 디코더는 출력 버퍼 할당을 위해 NativeWindow으로 생성 될 수 있습니다. 이 경우 CPU에서 버퍼에 액세스하려면 자세한 내용은 this query을 참조해야합니다.

+0

제 질문 [여기]를보실 수 있겠습니까? (http://stackoverflow.com/questions/24950470/android-dequeuing-native-buffer-returns -error-from-omxcodec-dequeued-unrecogni) –