View Issue Details

IDProjectCategoryView StatusLast Update
0004291MMW v4Playerpublic2008-01-23 23:55
Reporterjiri Assigned To 
PriorityimmediateSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version3.0 
Fixed in Version3.0 
Summary0004291: f_aac_codec: Time and seek problems
DescriptionA user sent me a sample track that doesn't play in f_aac, even though it plays well in other players. We can't do much about it, since the problem seems to be in QT (some AVs there).

However, the file also exhibits some problems in our f_aac_codec plug-in:

1. When only f_aac_codec plug-in is enabled (and f_acc isn't) MM shows incorrect track length (0:41 is the correct one). It isn't a big issue, since f_aac is expected to be always present at least for tagging purposed. That said, it might be an indication of some problems.

2. Seeking is somehow weird, after seeking forward, seeking back doesn't work, sometimes track finishes too early etc.

I tried to play the track in my WinAmp and it didn't play there, so I don't know how much it is corrupted, or what's wrong.
TagsNo tags attached.
Fixed in build

Relationships

related to 0003249 resolvedLudek Add ALAC decoding support to f_aac_codec.dll 

Activities

jiri

2008-01-15 17:54

administrator   ~0012869

Assigning to Ludek to review.

Ludek

2008-01-16 21:24

developer   ~0012883

Last edited: 2008-01-16 21:25

The track on the FTP plays fine by using f_aac for me. Which version of QT you have? I have QT 7.2.

Re: 1. When f_aac_codec plug-in is enabled MM shows the incorrect track length (1:22 instead of 0:44) only in for the attached (according you corrupted) track. For any others tracks it works fine in my case.

Re: 2. Seeking is somehow weird: This doesn't seem to be related to f_aac_codec, because I noticed this also in case of f_aac playback.
It seems to be rather related to the output plugin, if I changed from 'out_MMDS.dll' to 'out_wave.dll' the problem gone away.

jiri

2008-01-17 13:35

administrator   ~0012887

1. Ok, but since both plug-ins use our code for getting track length (i.e. it doesn't depend on QT in f_aac) we should rather check out why there is that difference.

2. There really seems to be something wrong with f_aac_codec, seeking even causes AVs sometimes! For debugging purposes I added:

OutputDebugString( pchar( string( formatplus( 'Decode: %x, %d, %d', [integer(Position), ReadBytes, Result]))));

after

Result := FormatHandler.F_DecodeChunk( Decoder, Position, ReadBytes);

in FormatsHandler.pas. After some seeking the returned Position values are even outside of the dll (and process) address space, which apparently causes AV just a little later.

Ludek

2008-01-17 20:28

developer   ~0012897

Last edited: 2008-01-17 20:29

I most probably found the root of the problem:

The file attached on our FTP seems to be an '.alac' file renamed to '.m4a' therefore there are the seeking problems, because seeking for ALAC has not been implemented yet.

This explains both 1. and 2., for uncorrupted m4a files seeking works fine and track length is also reported correctly.

jiri

2008-01-17 22:40

administrator   ~0012899

Ok, but it doesn't really explaing 1 nor 2. Note that ALAC stored in m4a container isn't anything non-standard, it's pretty much how many (or most?) ALACs are distributed.

Ludek

2008-01-23 23:55

developer   ~0012944

Seeking for ALAC added and both 1 and 2 fixed.
The new installing packages uploaded.