On Thu, Feb 27, 2014 at 10:07:38AM -0600, Pierre-Louis Bossart wrote:
On 2/26/14 8:29 AM, Richard Fitzgerald wrote:
The metadata is mainly for MP3 gapless playback, since the MP3 audio stream does not contain enough information to enable gapless. Other audio formats do not necessarily require any additional metadata so we should allow next_track to be called without any metadata.
Metadata is required for both MP3 and AAC gapless playback. Can you clarify what 'other formats' you are referring to? And rather than removing the check that makes sense for these popular formats, why not send metadata to set the # of samples to skip to zero? Thanks, -Pierre
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Any format, or any use-case, where we don't need to send metadata. I said "other formats do not _necessarily_ require any additional metadata". I'm not saying that _no_ other format needs metadata, just that it's not something that's always going to be mandatory. Also you shouldn't think only in terms of gapless play, you can chain track together for other reasons than gapless (for example to make best use of the DSP buffering and allow maximum host sleep time across multiple tracs) and still want to be able to do partial drains to know when the DSP starts decoding the next track.
It would be possible to send a dummy metadata, but why send dummy ioctls to make the API work when we could just remove the check that isn't needed?
Also there's no reason why the kernel should be enforcing this restriction - the core ALSA state machine doesn't need the metadata so it should be left to the DSP driver and/or firmware to decide whether metadata is mandatory in the current situation.