Fix OGG-FLAC streaming: proper metadata block format and frame boundary detection
FFPlay and strict decoders were rejecting the OGG-FLAC stream due to two critical issues:
1. **Invalid Vorbis Comment metadata block** (line 933)
- Previous: Sent raw Vorbis Comment data without FLAC metadata block wrapper
- Fixed: Wrap Vorbis Comment in proper FLAC metadata block format:
* Byte 0: 0x84 (type 4 = VORBIS_COMMENT + last-block flag)
* Bytes 1-3: length (24-bit big-endian)
* Bytes 4+: Vorbis Comment data
- Compliant with OGG-FLAC mapping spec (xiph.org/flac/ogg_mapping.html)
2. **Arbitrary 8KB frame segmentation** (line 799)
- Previous: Cut FLAC data at arbitrary 8KB boundaries, breaking frames mid-stream
- Fixed: Apply FLAC frame boundary detection (same as StreamingFlacSink fix in f783244)
* Add find_complete_frames_boundary() to detect sync codes (0xFF 0xF8-0xFE)
* Use 16KB read buffer + accumulator pattern
* Only broadcast complete frames (4KB minimum for OGG page efficiency)
* Send remaining data on EOF to prevent loss
- Ensures each OGG page contains only complete FLAC frames
Validation:
- ffplay successfully opens and decodes the stream
- ffprobe correctly identifies: Input #0, ogg / Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
This fixes "invalid sync code" and "invalid frame header" errors in FFPlay while
maintaining compatibility with VLC and other tolerant players.