M:S.F = 3:45.30
에서 시작하는 디코딩을 시도한다고 가정합니다. 초당 75 프레임 (CDDA 섹터)이 있으며 분당 60 초입니다. 귀하의 큐 시트에서 M : S.F를 샘플 오프셋 값으로 변환하려면, 먼저 원하는 시작점 인 CDDA 섹터의 수를 계산하십시오 : (((60 * 3) + 45) * 75) + 30 = 16,905
. 초당 75 섹터가 있기 때문에 오디오가 44,100 Hz에서 샘플링된다고 가정하면 섹터 당 44,100/75 = 588
개의 오디오 샘플이 있습니다. 따라서 디코딩을 시작할 원하는 오디오 샘플 오프셋은 588 * 16,905 = 9,940,140
입니다.
방금 계산 된 오프셋은 압축 된 FLAC 스트림 (바이트 단위가 아님)으로가 아니라 압축 해제 된 PCM 샘플에 대한 오프셋입니다. 따라서 각 FLAC 프레임에 포함 된 샘플 수를 계산하고 현재 위치의 실행 집계를 유지하십시오. 시작 오디오 샘플이 포함 된 것을 찾을 때까지 FLAC 프레임을 건너 뜁니다. 이 시점에서 오디오 디코딩을 시작하여 필요없는 FLAC 프레임의 샘플을 버릴 수 있습니다.
FLAC도 SEEKTABLE
블록을 지원합니다.이 블록을 사용하면 방금 설명한 프로세스의 속도가 크게 향상됩니다. 아직 구현하지 않았다면 reference decoder의 구현을 살펴볼 수 있습니다.
확인. 감사. 이것은 확실히 도움이되었습니다. 이제 프레임 헤더의 "UTF-8"코딩 된 프레임 번호가 내 머리를 긁어 모으게됩니다. 하지만 여전히 참조 디코더에 대한 링크를 검토해야합니다. – Cooter