2013-11-28 4 views
2

디코더 코드가 있습니다. 나는 그것을 ffmpeg framework에 통합하려고합니다.FFMPEG : 코덱의 컨텍스트를 강제적으로 정의하고 있습니까?

여기 부여 할 수있는 방법을 말하는 겁니다 : http://wiki.multimedia.cx/index.php?title=FFmpeg_codec_howto

난 내 decoder_name.c 파일의 구조를 정의 할 필요가 그 기사에 따르면.

예 구조는 다음과 같다 : 제 역시 위에서 언급 한 문서에 따른된다 그러나

.name -> specifies the short name of my decoder. 

.type -> is used to specify that it is a video decoder. 

.id -> is an unique id that i'm assigning to my video decoder. 

.init -> is a function pointer to the function in my decoder code that performs decoder related initializations 

.decode -> is a function pointer to the function in my decoder code that decodes a single frame, given the input data (elementary stream). 

.close -> is a function pointer to the function in my decoder that frees all allocated memory i.e. the memory allocated in init. 

는 다른 필드가,

AVCodec sample_decoder = 
{ 
    .name   = "sample", 
    .type   = AVCODEC_TYPE_VIDEO, 
    .id    = AVCODEC_ID_SAMPLE, 
    // .priv_data_size = sizeof(COOKContext), 
    .init   = sample_decode_init, 
    .close   = sample_decode_close, 
    .decode   = sample_decode_frame, 
}; 

는의 크기를 유지 .priv_data_size라고 어떤 상황.

위의 기사에 따르면이 필드는 반드시 .priv_data_size이어야합니다. 구조의 모든 매개 변수를 정의하지 않아도됩니다. AVCodec. 게다가 나는 내 디코더에 대한 그런 맥락을 가지고 있지 않다.

그러나 ffmpeg의 libavcodec에있는 다른 사용 가능한 디코더 코드를 살펴보면 모든 디코더가이를 정의했다는 것을 알았습니다. 이걸 지정하지 않으면 내 디코더가 작동합니까? 이 때문에 진행할 수 없습니다. 같은 지침을 폐지하는 지침을 제공하십시오.

- 미리 감사드립니다.

답변

3

필자는 연결된 MultimediaWiki를 유지 관리하고 있으며, 특히 FFmpeg가 항상 내부 인터페이스를 발전시키고 있기 때문에 HOWTO의 최신 버전이 오래되었음을 증명할 수 있습니다. 최신 FFmpeg 소스 코드를 얻고 인터페이스를 이해하는 가장 간단한 코덱을 연구하여 여행을 시작하는 것이 가장 좋습니다 (이미이 작업을 수행 한 것처럼 들릴 수 있습니다).

정보 priv_data_size 정보 :이 설정 여부는 전적으로 코덱이 통화간에 상태를 유지하는지 여부에 따라 결정됩니다. 대부분의 코덱은 이것에주의를 기울여 주 소스 파일에 MyCodecContext와 같은 구조체를 정의합니다. 그런 다음 sizeof()이 구조는 priv_data_size로 전달됩니다. 게시 한 예제에서는 sizeof(COOKContext)이었습니다.이 예제는 RealAudio COOK 코덱 파일에서 분명히 복사 되었기 때문입니다.

대부분의 코덱은 이전 프레임 또는 다양한 테이블에 대한 포인터와 같은 상태를 유지해야합니다. priv_data_size 멤버는 코어 엔진에이 구조체에 할당 할 공간을 알려주고 코어가 모든 코덱 호출에 해당 구조체를 전달합니다.

+0

해당 게시물을 유지하고 있음을 알려주세요. 정말 저와 같은 사람들이 코덱 통합을 시작하는 데 도움이됩니다. 먼저 게시물과 답변에 감사드립니다. 둘째, 관련 게시물이있는 경우이 섹션에서 귀중한 게시물 링크를 제공하십시오. 모든 사람에게 도움이 될 것입니다. 감사합니다 :) – sam

+0

여기 관심있는 멀티미디어 관련 질문에 대한 답변으로 작성한 또 다른 게시물이 있습니다. http://stackoverflow.com/a/9958424/475067 –