저는 avcodec이 AVFrame 데이터에 대해 정렬되지 않은 메모리를 사용하도록하는 옵션에 대해 높게 평가했습니다.avcodec에 정렬되지 않은 프레임 데이터 평면을 사용하게하는 방법은 무엇입니까?
픽셀 형식에 따라 AVFrame-> 데이터의 수평면에 성능을 위해 메모리에 정렬 할 추가 데이터가 채워질 수 있습니다.
예 : 픽셀 당 4 바이트의 1920 * 1080 비디오는 1920 * 4 = 7680 바이트 /면을 갖습니다.
avcodec을 사용하면이 비디오를 디코딩하면 비행기 당 7808 바이트가 생성됩니다.
이렇게하면 추가 패딩의 7808 - 7680 = 128 바이트가 추가됩니다.
제 목적을 위해 avcodec이 정렬되지 않은 데이터를 사용하도록하여 연속 된 청크에 한 번에 하나씩 더 작은 조각을 복사하고 서식을 지정하는 대신 프레임 데이터의 전체 연속 청크를 복사 할 수 있습니다. 헤더에있는
다음 플래그 :이 CODEC_FLAG_UNALIGNED 할 AVCodecContext.flags 설정
/* encoding support
These flags can be passed in AVCodecContext.flags before initialization.
Note: Not everything is supported yet.
*/
/**
* Allow decoders to produce frames with data planes that are not aligned
* to CPU requirements (e.g. due to cropping).
*/
#define CODEC_FLAG_UNALIGNED 0x0001
는 가정은 그렇지 않은는 AVFrame-> 데이터가 이제 정렬되지 않은 것입니다.
올바른 장소를보고 있거나이 플래그를 올바르게 사용하고 있는지 잘 모르겠습니다.
감사
호기심 조지
코덱이 더 폭보다 보폭을 선택할 수있는 많은 이유가, CPU 제한 –
"참고 그것의 한 부분 인. " 플래그가 지원되는지 확실합니까? –