2017-11-30 2 views
-2

코딩 및 디코딩 프로세스에서 cisco OpenH264 코덱을 사용하고 있습니다. 코딩 단계가 매우 잘 작동하고 인코딩 된 H.264 파일을 올바르게 읽을 수 있습니다. 문제는 내 디코딩 프로세스 및 주로 I420 to ARGB, 어느 누구도이 문제를 해결할 수 있습니다.델파이 OpenH264 디코드

/* 
* [ IN ] SourceData : the encoded frame(s) 
* [ OUT ] pTargetbuffer : the Target buffer 
* [ OUT ] width 
* [ OUT ] height 
*/ 
{ 

    int iStride[2]; 
    init(); 

     ... the decoding routine : pData contains the YUV 

     if (ret != dsErrorFree) { 

      return -1; 
     } 
     if (!m_sBufferInfo.iBufferStatus) { 
      return -2; 
     } 

    LWidth = m_sBufferInfo.UsrData.sSystemBuffer.iWidth; 
    LHeight = m_sBufferInfo.UsrData.sSystemBuffer.iHeight; 
    *width = LWidth; 
    *height = LHeight; 

     iStride[0] = m_sBufferInfo.UsrData.sSystemBuffer.iStride[0]; 
     iStride[1] = m_sBufferInfo.UsrData.sSystemBuffer.iStride[1]; 



     return 0; 
} 

여기 내 델파이 구현의 :

Image.Picture.Bitmap.PixelFormat := pf24bit; 
Image.Picture.Bitmap.Width := 320; 
Image.Picture.Bitmap.Height := 240; 
    ... 
Result:=H264Decoder_decode(FEncodedBuffer, 
          Image.Picture.Bitmap.ScanLine[Image.Picture.Bitmap.Height-1], 
          EncodedBufferSize,LWidth,LHeight); 

if result=0 then Image.Repaint; 

이렇게 많은 감사

여기합니다 (OpenH264 래퍼 DLL에서) 내 디코딩 기능입니다.

답변

0

많은 감사의 말로 문제를 해결했습니다. 문제는했다 내가 설정 :

Image.Picture.Bitmap.PixelFormat := pf24bit; 

하지만`폭을 변경하는 경우 올바른 PixelFormat is the pf32bit

+0

** OpenH264 **의 전체 델파이 버전을 제공 할 수 있습니까? 예를 들어 GitHub 또는 다운로드 할 다른 곳에서 일부 저장소에 업로드 할 수 있습니까? 나는 이것을 매우 필요로합니다 :-) –

+0

저는 [이 모델] (http://www.dobest)와 같은 장치 화면의 실시간 스트림을 받기를 원하는 프로젝트 예제 Delphi + Android (Java)에서 작업하고 있습니다. .me/blog/2016/06/17/Android % E5 % B1 % 8F % E5 % B9 % 95 % E7 % 9B % B4 % E6 % 92 % AD % E6 % 96 % B9 % E6 % A1 % 88/,하지만 당신이 질문에 위에서 보여준 것처럼 'TImage'에서 델파이를 받고 싶습니다. –

0

보폭이 (int dst_stride_frame) 인 경우 H264Decoder_decode()width * 3이어야합니다.

즉, 한 픽셀이 3 바이트 (24 비트/8)를 차지하는 24 비트 RGB 이미지로 변환하려고하기 때문입니다.

width * 2으로 변환 된 이미지에는 2/3의 데이터 만 포함되어 이미지가 생성됩니다. 32 비트 RGB로 변환하려면 width * 4이 적용됩니다.

+0

많은 덕분에, *'폭으로 2'는 * 3' 나도 그 AV를 얻을. – randydom