1
YUV 파일에 YUV (YV12) 프레임을 쓰고 있습니다. 정확히 101 프레임을 저장하고 있습니다. 그러나 출력 YUV 파일을 재생할 때마다 두 번째 프레임이 더 비싸지 만 두 번째 프레임은 항상 비어 있습니다. 나는 101 번요 번 확인 왔어 어디 다른 프레임에서 온 않는이 블록을 실행파일에 YUV를 쓰면 프레임이 중복됩니다.
size_t lenght=_viewWidth * _viewHeight * 3;
BYTE *bytes=(BYTE*)malloc(lenght);
/////////////// read pixels from tex /////////////////////
glBindTexture(GL_TEXTURE_2D,tex);
glGetTexImage(GL_TEXTURE_2D,0,GL_RGB,GL_UNSIGNED_BYTE,bytes);
glBindTexture(GL_TEXTURE_2D,0);
BYTE *uvOut= new uint8_t[_viewWidth * _viewHeight *3];
if(cfg.seqStart <= cfg.seqEnd)
{
hOutFile = fopen(outFileName.c_str(), cfg.appendMode ? "ab" : "wb");
assert(hOutFile!=0);
RGBtoYUV420PSameSize(bytes,uvOut,3,0,_viewWidth,_viewHeight);
fwrite(uvOut,_viewWidth* 3, _viewHeight, hOutFile); // Write V line
fclose(hOutFile);
cfg.seqStart++;
}else{
printf("done");
}
delete uvOut;
free(bytes);
: 여기
내 코드?
크기가 너비 * 높이 * 1.5 일 때 fwrite가 필요합니까? , count param도 마찬가지입니까? 정보 주셔서 감사합니다, btw! –
예, 그럴 것 같습니다 –
@MichaelIV : Carefull about 1.5! 계산시 부동 소수점 숫자를 사용하면 반올림 오류가 발생하기 쉽습니다. 대신 3/2를 사용하십시오. 이것은 물론 이미지 너비가 2로 나눌 수있는 숫자 여야한다는 것을 의미합니다 (이것은 크로마 하위 샘플링의 제한 조건입니다). – datenwolf