No audio on second and subsequent playback of HDMI IN recording

Issue #487 resolved
prl created an issue

When a HDMI IN recording is first played after recording it its audio plays normally. However on the second and subsequent playbacks of the recording the playback often has no audio, and in that case the AudioSelection screen (long-AUDIO) shows no audio streams.

On the first playback of a recording, its "interesting" PIDs are cached in the service data (8th) line of the recording's .meta file. This includes the file's audio PIDs.

On subsequent playbacks, the file's PIDs are normally taken from the cached PIDs if the PID line exists instead of by scanning the recording file PMT.

However, the system recognises 8 audio types in recording files: MPEG, AC3, DTS, AAC, AAC-HE, LPCM, DTSHD & DDP.

However, only 4 of those are cached in the service data: MPEG, AC3, AAC-HEAPID & DDP. The PIDs for AAC, LPCM, DTSHD & DDP are not cached.

HDMI IN recordings have only AAC audio. When the cached PIDs are used for playback, there is no cached audio PID found, so no audio is played and no audio stream is found for the AudioSelection (long-AUDIO) screen.

This bug could affect any recordings where the audio is only available in AAC, LPCM, DTSHD or DDP formats (or combinations of them).

Replication

Make a short recording from HDMI IN. Play it: it should play with audio.

Stop it or let it run to the end. Play it again. It is likely to play without audio.

This problem may be affected by a data-dependent race condition. Sometimes the audio plays correctly on second and subsequent playbacks. Repeat the recording/playback procedure above until the error is shown. The recording should be retained for testing of the fix.

If replication proves difficult, I can attach a short (39MB) HDMI IN recording that shows this problem.

Comments (4)

  1. Peter Urbanec

    Fix Bug #487: No audio on second and subsequent playback of HDMI IN recording

    [eDVBService]

    Add PID cache tags for missing audio types: cDTSPID, cAACPID, cLPCMPID & cDTSHDPID, and expand the cache to match. The added cache tags leave the numbering of existing tags unchanged for .meta file backward compatibility.

    [eDVBServicePMTHandler]

    In getProgramInfo(), add additional variables for audio pids.

    Where the execution order matters, use the same values as the original code where applicable (e.g. in setting program.defaultAudioStream).

    [eDVBServicePlay]

    In selectAudioStream() and getInfo(): as for [eDVBServicePMTHandler].

    → <<cset 3f49b41c5ab2>>

  2. Log in to comment