4

나는 비디오 디코더를 Stagefright (Android의 멀티미디어 프레임 워크)에 통합하는 작업이 있습니다. 내가 검색하고 Stagefright에 대한 새 플러그인을 만드는 방법에 대해 다음과 발견 :스테이지 플 라이트 플러그인을 만드는 방법

새로운 형식에 대한 지원을 추가하려면 다음을 수행해야합니다

  • 컨테이너가 아닌 경우, 새로운 추출기 클래스를 개발 아직 지원되지 않습니다.

  • StageFright 코어가 데이터를 읽는 데 필요한 인터페이스를 구현하는 새로운 Decoder 클래스를 개발하십시오.

  • 파일의 MIME 유형을 OMXCodec.cpp 파일의 kDecoderInfo 배열에있는 새 디코더로 읽을 수 있습니다.

static const CodecInfo kDecoderInfo[] = { 
     {MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode"}, 
     {MEDIA_MIMETYPE_AUDIO_AAC, "AACDecoder"}, 
    }; 

위의 데이터는 내가 인터넷에서 찾을 수있는 모든 것입니다. 지금은 파일을 입력으로 받아서 안드로이드의 기본 API를 사용하여 화면에 렌더링하는 간단한 응용 프로그램이 있습니다. 아무도 더 진행하는 법을 말해 줄 수 있습니까? 그리고이 모든 것이 OMXCodec.cpp과 다른 것들이 어디서 왔는지 그리고 내 프로젝트의 어느 디렉토리에 있어야합니까? 같은 문제에 대한 해결책을 제공해주십시오. 미리 감사드립니다.

답변

10

질문에 따라 Ice-Cream Sandwich 또는 이전 버전의 Android에 대한 권장 사항을 찾고있는 것으로 보입니다. 가장 먼저해야 할 일은 안드로이드의 버전 즉, Ice-Cream Sandwich 이전 또는 JellyBean 이후입니다. 코덱의 통합 은 다른 Android 버전에 따라과 다릅니다.

이미 특정 당신의 다른 질문에 댓글을 달았 JellyBean 이상 (참조 : Android: How to integrate a decoder to multimedia framework)

당신이 Ice-Cream Sandwich 또는 전에 코덱을 통합하려는 경우, 단계가 귀하의 질문에 이미 사용할 수 있습니다. 디코더를 kDecoderInfo 목록에 추가하는 것 외에도 here과 같이 특정 쿼크를 설정하는 것이 좋습니다. OMXCodec.cpp의 질문에 대한

, 당신은 JellyBean의 경우 Ice-Cream Sandwichframeworks/av/media/libstagefright/의 경우 frameworks/base/media/libstagefright/에서이 파일을 찾을 수 있습니다. 당신이 Stagefright 프레임 워크에 비디오 디코더를 통합하기위한 모든 단계를 따라 한 경우

, 다음 가장 쉬운 시험은 다음을 수행하는 것입니다 :

  1. 복사로 미디어 파일을 SD 카드

  2. OMXCodec.cpp에서이 문 //#define LOG_NDEBUG 0의 주석을 제거하고 디렉토리에 mm을 실행하여 로그를 활성화하십시오. 다시 작성한 libstagefright.so을 기기의 /system/lib에 복사합니다.

  3. logcat을 사용하도록 설정하고 로그 캡처를 시작합니다.

  4. 갤러리로 이동하여 파일을 선택하고 표준 플레이어가 파일을 재생할 수있게하십시오.

  5. 플레이어가 구성품 이름을 검색하여 OMX 구성 요소를 선택한 경우 로그 파일을 확인하십시오. 찾으면 코덱을 Stagefright에 통합 한 것입니다. 그렇지 않으면 문제를 디버깅하고 알아 내야합니다.

는 포스트 스크립트 :

  1. 쿼리를 기반으로, 나는 당신이 안드로이드 소스에 익숙하지 않은 가정. AOSP 배포판에 익숙해 지려면 androidxref 사이트를 참조하십시오.

  2. 새 미디어 파일 형식을 지원하지 않으려면 Extractor 클래스를 지원할 필요가 없습니다. MediaExtractor은 파일 형식 파서를 추상화하고 미디어 파일의 여러 트랙을 역 다중화하는 데 도움을줍니다.

이 정보가 도움이되었으므로 Android에서 코덱을 통합하고 사용할 수 있어야합니다.

+0

고마워요.이 정보로 계속 진행할 수 있습니다. 가능하다면 안드로이드 소스에 대한 기본 사항을 알 수있는 특정 링크를 제공해주십시오. 위의 주어진 링크에서 http://androidxref.com/ 내 프로젝트에서 안드로이드 소스를 사용하여 시작하는 방법에 대한 기초를 찾을 수 없습니다. 모든 응용 프로그램에서 안드로이드 소스를 사용하는 방법에 대한 정보원을 제공 할 수 있다면 정말 좋을 것입니다. 또한 작은 쿼리 : 여기에 안드로이드 소스 코드를 수정하거나 기존 소스 코드에 대한 독립 실행 형 플러그인을 만드는 중입니까? – Zax

+1

@Zax Java 수준의 소개를 찾고 있다면 http://developer.android.com/training/index.html에서 시작할 수 있습니다. 그러나 통합 노트를보고 있다면 stackoverflow 아카이브에서 더 많은 내용을 읽을 수 있습니다. Ice-Cream Sandwich에 코덱을 통합하려면 Android 소스를 수정해야합니다. 'JellyBean'으로의 통합을 위해서는 플랫폼 특정 파일을 업데이트해야합니다. 소스 코드는 없습니다. – Ganesh

+0

마지막으로 저는 안드로이드 소스 코드의 일부를 다시 빌드하고 libstagefright.so를 생성해야한다는 것을 이해했습니다. Android.mk를 내 장치의/system/libs에있는 기존 장치로 바꿉니다. 이제 inorder를 * .so 파일로 만들려면 전체 안드로이드 소스 코드를 다운로드해야합니까, 아니면 framework/base/media/libstagefright/contents를 다운로드해야합니까? – Zax