2013-01-03 7 views
0

libavcodec을 사용하여 프레임을 디코딩하려고합니다. 내 응용 프로그램은 rtp 스트림에서 live555를 사용하여 rtp 패킷을 검색합니다. 나는 avcodec_decode_video가 got_picture_ptr을 0으로 설정했기 때문에 꽤 많이 검색했지만 찾지 못했습니다.
누군가 avcodec_decode_video2가 내부적으로 어떻게 작동하는지 알려 줄 수 있습니까? got_picture_ptr 포인터를 0으로 설정할 수있는 이유는 무엇입니까? PS :이 함수는 바이트를 읽습니다. 즉 반환 값은 항상 -1이 아닌 양수입니다. 나는 여기에 난처한 데 어떤 도움을 주셔서 감사합니다. avcodec_decode_video2를 사용하여 디코드 할 코드가 상당히 일반적이고 내 코드에는 특별한 것이 없습니다. (이전에 libavcodec을 사용하여 rtsp 스트림을 디코딩했으나 live555와 함께 사용하지 않았습니다.)avcodec_decode_video2는 live555와 함께 사용할 때 항상 got_picture_ptr을 0으로 설정합니다.

답변

0

글쎄, 나는 마침내 그것을 해결할 수 있습니다. 문제는 내가 live555에서 MediaSink 객체를 처리하는 방식이었습니다. DataSink에서 파생 된 Sink 클래스의 afterGettingFrame 함수를 호출하기로되어 있었는데, 그 이유는 MediaSink에서 파생 되었기 때문에 데이터를 가져 오는 중이었기 때문에 데이터를 읽지 않고 avcodec_decode_video2 메서드로 전달하기 때문이었습니다.

관련 문제