2012-03-13 3 views
2

캡처 한 비디오를 내보내는 응용 프로그램을 작성 중입니다 (PAL SDI). 원래 색 공간은 uyvy (4 : 2 : 2)입니다. swscale이있는 프레임을 4 : 2 : 0으로 변환하고 avcodec을 사용하여 인코딩 할 때 필드 사이에 색상이 번져 나옵니다. 나는 이것이 인터레이스되는 프레임을 인식하지 못하는 swscale에서 온 것 같아. 당신이 볼 수 있듯이Swscale 색상 공간이 인터레이스 된 프레임을 변환합니까?

color bleeding between fields

, 색상이 다른 분야에서 출혈 : 다음 필드 중 하나를 보여주는 내 보낸 비디오에서 밥 - 인터레이스 프레임의 일부의 예입니다. 어떻게 이런 일이 일어나지 않게해야합니까? 나는 도서관을보고 swscale에서 밭을 존중하라는 것을 찾는 것을 찾으려고했지만 아무 것도 발견하지 못했다.

나는 각 필드를 별도의 버퍼에 저장하므로 도움이 될만한 경우 수동으로 필드를 개별적으로 처리 할 수 ​​있습니다.

감사합니다.

감사 칼

편집 : 기본적으로, 내가 원하는 것은 출력 PAL의 DV이다. 나는 swscale이 ffmpeg (응용 프로그램)가 이것을 처리 할 수 ​​있기 때문에 어떻게 든이 유형의 인터레이스 된 420을 생성 할 수 있다고 생각합니다 (나는 생각합니다).

답변

3

대답은 각 필드에 대해 하나씩 두 개의 swscale 연산을 수행하는 것입니다. 두 배의 보폭을 사용하여 높이의 절반을 지정하고 두 번째 작업을 한 줄씩 오프셋하여 동일한 버퍼를 사용하도록 swscale을 속일 수 있습니다.

마지막으로 libav 사용자 목록에서 대답을 얻었습니다. 예제 코드는 MPlayer/libmpcodecs/vf_scale.c 및 libavfilter/vf_scale.c에서 찾을 수 있습니다.

관련 문제