서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.
안녕하세요.
또 궁금한게 있어서 질문드려요~
많이 찾아보고 공부해봐도 확실한 답을 못 얻었네요;;
책의 예제를 공부하다보니
PDK를 이용해서 안드로이드 프레임워크 라이브러리인 so파일을 참조하는 APK파일을 만들었던데..
Android.mk 내용을 예로 들어보면
동적으로 참조하는 so 파일을 아래와 같이 참조하던데..
LOCAL_SHARED_LIBRARIES := \
libaudioflinger \
libmediaplayerservice \
LOCAL_C_INCLUDES := \
frameworks/av/services/audioflinger \
frameworks/av/media/libmediaplayerservice \
LOCAL_SHARED_LIBRARIES로 설정한 동적 라이브러리들은
APK에 포함 되진 않는 것 같고
PDK 소스 내부 상대 경로로 참조 하는 것 같던데.. 제가 이해하고 있는게 맞는건진 잘 모르겠네요^^:;
그래서 본 질문은
안드로이드 OS가 올라가잇는 실제 타겟 디바이스(예를 들어 갤럭시s3)에 위의 방식으로 만든 APK를 설치하면
so파일을 타겟 디바이스의 경로에서 참조하게 되는건가요?
두서 없이 막 적은거 같네요.ㅠ
질문을 정리해 보자면
PDK를 이용해서 so파일을 참조하는 APK를 만들고 실제 타겟 디바이스에 설치하면
타겟 디바이스에 있는 so파일 참조하게 되는지 궁금합니다.
두분 모두 답변 감사드립니다^^ 오늘도 하나를 배웠네요 ㅋ
다른 궁금한점이 있습니다.^^:;
미디어 프레임워크 공부를 하면서 동영상 플레이어를 한번 만들어보려고 합니다.
제가 만든 앱에서 디코딩 된 프레임 데이터를 가져와서 여러가지 처리를 해보려고 합니다...
FFmpeg 라이브러리가 아닌 밴더의 하드웨어 디코딩으로 추출된 프레임 데이터를 원해서(속도때문에)...
네이티브 단에서 mediaplayer를 통해 stagefrightplayer엔진에서 제공해주는 기능만 사용할 수 있던데..
stagefrightplayer엔진에 기능을 추가하거나 디코딩 된 프레임 데이터를 가져오려면
타겟 디바이스의 프레임워크를 수정하지 않는 한 힘들까요?...
DicePlayer앱의 경우는 밴더의 하드웨어 디코딩으로 배속기능도 구현이 되어 있는걸 보니 불가능하진 않는 것 같은데 거기다 팝업플레이 기능까지 되는걸 보니..
아직 공부가 미흡해서 방법론이 잘 떠오르지 않네요..ㅠㅠ 혹은 제가 너무 엉뚱하게 생각한걸지도...
조언 부탁드리겠습니다~!!
ACodec을 이용하면 hw codec에 접근할 수 있을겁니다.
다만, 영상의 출력 format을 알아야 하는 단점이 있습니다.
예를 들어 삼성의 경우는 NV12Tiled라는 자사 포맷을 사용하고, Qualcomm등은 또 다른 포맷을 사용합니다.
이 부분을 추적하는게 좀 힘들겁니다.
즉, 데이터는 가져오려면 각 회사의 format을 어느정도 아셔야 합니다.
다만 framework단을 손댄다는 가정하에서는 그냥 surface만 제대로 설정하시면 그냥 hw codec을 다 사용하실 수 있을겁니다.
dice player는 아주 예전에 symbol만 훑어본적이 있는데, 예전이랑 요즘은 많이 틀려졌을 거라고 생각합니다.
대충 동작되는 것을 보면 큰 문제없이 파악하실 수 있을겁니다.
여하튼 ACodec같은 것을 이용하면 사용하실 수 있습니다.
생각하신게 맞습니다. LD_LIBRARY_PATH 걸려있는데서 찾도록 되어 있습니다.
공통적으로 있는것을 사용할때는 큰문제는 없을거예요. (제조사가 마구 바꾸지 않은 이상)