기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요.

맨땅에 헤딩하고 있는 사람입니다.^^;


오드로이드 사용해서 안드로이드 위에서가 아닌 리눅스상에서 카메라 녹화를 하고자 합니다.

진행이 뜻대로 되지 않아 문의드립니다.ㅜㅜ


안드로이드 소스 중에 인코딩하는 곳을 찾으니 

SsbSipMfcEncAPI.c 라고 있더군요. 버퍼를 설정하고 인코딩을 해서 다시 받을 수 있게 하드웨어를 동작해켜주는 부분인거 같습니다.


이 코드를 SEC_OMX_H264enc.c 에서 사용하더군요. 

초기화를 하고, 버퍼를 정해주고, 인코딩을 하고...


이 소스 및 연결된 다른 소스를 살펴보며 테스르를 하고 있는데 아~ 잘 안됩니다.


테스트 방법은 640x480 YUV 422 영상 하나를 반복하여 인코딩 시켜서 저장한 후 

H264파일을 재생가능한 파일로 변환(변환프로그램사용)시켜서 재생시켜봤습니다.


H264파일의 시작이 001로 시작하고 프레임수도 제가 반복해서 저장한 수랑 동일합니다.

뭔가 저장이 된듯한데 영상은 완전히 알아볼수 없는 실제 영상과 전혀 다른 영상이 나옵니다. 그냥 쓰레기영상.


s5pc110의 SsbSipMfcEncAPI를 사용해보신분 계시면 도움좀 얻을 수 있을까요?


초기화시 각종 파라미터는 다음과 같이 넣었습니다.


    pH264Arg->codecType = H264_ENC;

    pH264Arg->SourceWidth = 640;

    pH264Arg->SourceHeight = 480;

    pH264Arg->IDRPeriod = 60;

    pH264Arg->SliceMode = 0;

    pH264Arg->RandomIntraMBRefresh = 0;

    pH264Arg->Bitrate = 64000;

    pH264Arg->QSCodeMax = 30;

    pH264Arg->QSCodeMin = 10;

    pH264Arg->PadControlOn = 0;             // 0: disable, 1: enable

    pH264Arg->LumaPadVal = 0;

    pH264Arg->CbPadVal = 0;

    pH264Arg->CrPadVal = 0;


    pH264Arg->ProfileIDC = 0; 

    pH264Arg->LevelIDC = 40;

    pH264Arg->FrameRate = 25;

    pH264Arg->SliceArgument = 0;  

    pH264Arg->NumberBFrames = 0; 

    pH264Arg->NumberReferenceFrames = 1;

    pH264Arg->NumberRefForPframes = 1;

    pH264Arg->LoopFilterDisable = 1;    // 1: Loop Filter Disable, 0: Filter Enable

    pH264Arg->LoopFilterAlphaC0Offset = 0;

    pH264Arg->LoopFilterBetaOffset = 0;

    pH264Arg->SymbolMode = 0;         // 0: CAVLC, 1: CABAC

    pH264Arg->PictureInterlace = 0;

    pH264Arg->Transform8x8Mode = 0;         // 0: 4x4, 1: allow 8x8

    pH264Arg->DarkDisable = 1;

    pH264Arg->SmoothDisable = 1;

    pH264Arg->StaticDisable = 1;

    pH264Arg->ActivityDisable = 1;


    pH264Arg->FrameQp = 20; //pVideoEnc->quantization.nQpI;

    pH264Arg->FrameQp_P = 20; //pVideoEnc->quantization.nQpP;

    pH264Arg->FrameQp_B = 20; //pVideoEnc->quantization.nQpB;


    // Android default

    pH264Arg->EnableFRMRateControl = 0; // 0: Disable, 1: Frame level RC

    pH264Arg->EnableMBRateControl  = 0; // 0: Disable, 1:MB level RC

    pH264Arg->CBRPeriodRf  = 100;




버퍼 설정 할 때 원본 소스가 들어가는 InputData의 buffer에는 YUV 422 버퍼를 그대로 복사했습니다.

그런형식으로 들어가는 것이 맞는지.. 

혹시나 해서 참고하는 소스 파일 첨부합니다.


DragonRecord.cpp 가 제가 테스트 중인 파일이며

SsbSipMfcEncAPI.c가 호출해서 사용하는 API

SEC_OMX_H264enc.c가 참고하고 있는 소스입니다.

cam_640x480.yuv는 읽어들여서 인코딩하고자 하는 파일입니다.

cam_640x480.avi는 변환된 결과 입니다.


관련하여 도움말씀 주실분 계시면 감사하겠습니다.ㅜㅜ


ikari

2012.04.04 04:36:02
*.15.203.105

아마 원본 영상을 NV12로 변환시키신후, Y데이터와 CbCr 데이터를 각각의 해당하는 주소에 넣어주셔야 될겁니다..

동영상 인코더에서는 NV12/NV12T(NV12 포멧을 삼성측에서 변형시킨 겁니다)만 지원됩니다.

고도리

2012.04.04 07:39:27
*.200.239.234

ikari님 말씀처럼 NV12 Tiled format으로 아마도 집어 넣어야 될 듯 합니다(c110서부터는).

블루스카이

2012.04.04 09:13:11
*.54.174.151

쪽지로 메일 주소 보내 주시면 참고하실 수 있는 소스 보내드리겠습니다.

그리고 S3C6410 Resource에 있는 Multimedia_DD file도 참고 하세요. 그거 보시면 사용법에 대한 윤곽이 잡히실 겁니다.

profile

차차호드

2012.04.04 18:59:25
*.166.128.172

아 답변 감사합니다. 2주째 막막하게 있었는데 찾아볼 힌트가 생겨서 좋습니다.!

NV12 관련된것을 찾아봐야겠군요! 

블루스카이님 쪽지 드릴께요^^~ 감사합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
5288 S3C6410 삼성 2.6.29 kernel 구하는 곳이 없을까요? [7] Supsupi 2012-04-05 1333
5287 WIFI 인증 테스트 하려고 하는데요... 명령어가 [3] 현쓰 2012-04-05 2405
5286 android USB 질문 입니다. [3] kingdomy 2012-04-05 1276
5285 USB : Bulk In callback 호출 문제 다콩 2012-04-05 844
5284 uboot에서 멈추는 현상에 대해서 문의 드립니다. [2] 혜민아빠 2012-04-04 1352
5283 u-boot가 다음 메세지까지만 출력하고 멈추게 되면 뭘 의심해야 할까... file [3] 혜민아빠 2012-04-03 1281
5282 uboot에서 sdram메모리 설정은 어디서 해야 할까요? [1] 혜민아빠 2012-04-03 1149
5281 uboot설정을 sdram memory와 맞추기 위해서는 어떻게 해야하는 것일까... file [1] 혜민아빠 2012-04-03 1205
» [s5pc110] SsbSipMfcEncAPI.c 사용하여 H264 인코딩 file [4] 차차호드 2012-04-03 2026
5279 WIFI 인증 관련 궁금한점 있습니다. [5] 현쓰 2012-04-03 1454
5278 ramdisk 땜시 허덕이고 있습니다. ㅠㅠ(help me) [2] 혜민아빠 2012-04-03 1182
5277 u-boot의 mtdpart 환경변수값의 의미가 궁금합니다. [2] Supsupi 2012-04-02 1724
5276 안드로이드 자바로 멀티코어 사용 문의 [7] 김장균 2012-04-02 1338
5275 memcpy(); 해황 2012-03-31 791
5274 tftp 이거 가능한건가요?[초보자] file [2] 웅탱곰탱 2012-03-31 1327
5273 memcpy() [1] 해황 2012-03-30 1002
5272 nexus-S에 ics 올리기 [2] 박수민 2012-03-29 1273
5271 스위치관련 질문입니다. sonbong 2012-03-28 704
5270 Origen 리나로 우분투 HDMI 문의 [2] 김장균 2012-03-28 1277
5269 회로도 관련 질문이 있습니다. [7] sonbong 2012-03-27 1514

사용자 로그인