QAAC: discussion, questions, feature requests, etc., [originally a thread for a feature request] |
![]() ![]() |
QAAC: discussion, questions, feature requests, etc., [originally a thread for a feature request] |
Jan 1 2013, 04:13
Post
#301
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
Yeah, *some* part of qaac has been written more or less portability in mind, but others are not.
When qaac moved from QuickTime to CoreAudioToolbox, I dropped gcc(MingW) because I wanted to use DLL delay loading for CoreAudioToolbox.dll. Since then, I stopped to care about portability at all. So, now qaac even lacks cross compiler support on Win32, and I don't think it's a good base for making something useful. If I find time, I *might* think of writing much simpler implementation for libfdk_aac. |
|
|
|
Jan 1 2013, 22:27
Post
#302
|
|
|
Group: Members Posts: 6 Joined: 25-December 12 Member No.: 105392 |
nu774
Sorry to bother with this, I am a bit confused about multichannel handling by QAAC. I have now an LPCM file (wav or au format) that has the channels, according to MediaInfo, in the following order Front: LCR Side: LsRsLFE Now, when QAAC does its first (Microsoft) reordering, does it re-order channels incorrectly, as the specified above channel mask is not mentioned in the channel input layout table? How does one let QAAC know the input channel layout? Also, just in case, am I right to assume, when writing a matrix file, the Microsoft layout? |
|
|
|
Jan 1 2013, 22:39
Post
#303
|
|
|
Group: Members Posts: 131 Joined: 20-November 01 Member No.: 503 |
@ usikpa:
MeGUI uses AviSynth, usually a scriptable video frameserver, but it is also able to serve audio in RAM to the encoder. This technique was first used by BeHappy, specifically an audio converter, alternative to the abandoned BeSweet. -------------------- http://forum.gleitz.info - das deutsche doom9/Gleitz-Forum
|
|
|
|
Jan 1 2013, 23:01
Post
#304
|
|
![]() Group: Developer Posts: 2982 Joined: 2-December 07 Member No.: 49183 |
nu774 Front: LCR Side: LsRsLFE Now, when QAAC does its first (Microsoft) reordering, does it re-order channels incorrectly, as the specified above channel mask is not mentioned in the channel input layout table? How does one let QAAC know the input channel layout? The channel order for WAV format is fixed. Your layout is equal to "FL FR FC LFE SL SR" |
|
|
|
Jan 2 2013, 06:08
Post
#305
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
Use --verbose if you are uncertain of channel layout recognition by qaac. It will show something like the following:
CODE Input layout: 5.1 (L R C LFE Lsd Rsd) Output layout: 5.1 (C L R Ls Rs LFE) Also, just in case, am I right to assume, when writing a matrix file, the Microsoft layout? Correct. |
|
|
|
Jan 2 2013, 22:36
Post
#306
|
|
|
Group: Members Posts: 6 Joined: 25-December 12 Member No.: 105392 |
Use --verbose if you are uncertain of channel layout recognition by qaac. It will show something like the following: CODE Input layout: 5.1 (L R C LFE Lsd Rsd) Output layout: 5.1 (C L R Ls Rs LFE) Well, I did, and this is what I got: CODE ... audio.m4a Using default channel layout. Output layout: 5.1 (C L R Ls Rs LFE) ... As advised above, will resort to the .wav file format instead of .au Thank you for your replies |
|
|
|
Jan 4 2013, 17:28
Post
#307
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
Speaking of libfdk_aac, it would be really cool if someone could make a portable version of qaac that uses libfdk_aac as the encoder, as neither ffmpeg nor avconv appear to support gapless encoding. I'm only guessing that the only non-portable binary blob code that qaac uses is the CoreAudioToolbox library, and only for AAC encoding. Well, and then I did look into some of the headers when I considered an attempt, and noticed a lot of Win32 header and function usage, so maybe it won't be so easy after all. Finally written frontend from scratch: https://github.com/nu774/fdkaac Very simple program (compared to qaac), only WAV input is available. Gapless playback is supported at least for LC. I hope it to be portable (tested on mingw-w64 and Linux). |
|
|
|
Jan 4 2013, 17:40
Post
#308
|
|
|
Group: Members Posts: 32 Joined: 22-June 12 Member No.: 100900 |
Excellent, will you be building a version to work with fb2k??
|
|
|
|
Jan 4 2013, 17:45
Post
#309
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
|
|
|
|
Jan 4 2013, 17:59
Post
#310
|
|
|
Group: Members Posts: 32 Joined: 22-June 12 Member No.: 100900 |
Finally written frontend from scratch:
https://github.com/nu774/fdkaac Very simple program (compared to qaac), only WAV input is available. Gapless playback is supported at least for LC. I hope it to be portable (tested on mingw-w64 and Linux). I have no idea how to build this or how to get it to work with fb2k? This post has been edited by sluggy: Jan 4 2013, 18:24 |
|
|
|
Jan 4 2013, 20:59
Post
#311
|
|
|
Group: Members Posts: 431 Joined: 11-February 12 Member No.: 97076 |
nu774, two quick questions:
1) Why should people use 1.x instead of 2.x? Older OSes? 2) Why is 2.09 still available in "Cabinet" and not in "old", is 2.10 a testing build? Thanks. This post has been edited by eahm: Jan 4 2013, 21:00 |
|
|
|
Jan 5 2013, 02:08
Post
#312
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
1) Why should people use 1.x instead of 2.x? Older OSes? I don't recommend which to use. Although 2.x made improvements in functionality, you can continue to use 1.x if you think 2.x is not stable enough. 2) Why is 2.09 still available in "Cabinet" and not in "old", is 2.10 a testing build? Just forgot to move it, thanks for pointing out. |
|
|
|
Jan 10 2013, 16:00
Post
#313
|
|
![]() Group: Members Posts: 10 Joined: 7-January 13 Member No.: 105656 |
|
|
|
|
Jan 11 2013, 04:20
Post
#314
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
What is the position with fdkaac.exe? When it's compiled, is it OK to share it on this forum or some file-hosting site? (Just asking) As for Fraunhofer's FDK AAC library, read here: https://raw.github.com/mstorsjo/fdk-aac/master/NOTICE |
|
|
|
Jan 12 2013, 22:44
Post
#315
|
|
|
Group: Members Posts: 5 Joined: 31-July 12 Member No.: 101901 |
Hi!
Thank you for this wonderful program! I'm very new to AAC formats (AAC/M4A). So far I've been using just Foobar with NeroAACenc. But with this getting frequent updates, I've decided to look into this and see how it fairs for my typical usage. Right now it's just PC playback and a Coby portable media player. Windows 7 (64bit)/Windows XP SP3 (32bit). My Coby media player is MP828-8GB. I've delayed trying this out due to the CoreAudioToolbox conundrum. Thankfully sneaker created a wonderful batch script to extract all the necessary files and make things easier. :) It took me several tests to figure out the quality values for TVBR [127=highest] and for the -q [0-2] quality modes [0=highest], as their values are not listed in the help and I'm completely new to the AAC field. ^__^" Thank you all for your contribution and I look forward to using this more frequently and checking out more updates in the future. -------------------- [center]24bit/48kHz/5.1 or bust.[/center]
|
|
|
|
Jan 13 2013, 02:14
Post
#316
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
Document is at https://github.com/nu774/qaac/wiki
-q controls quality/speed trade off, and 2 is highest in quality, slowest in speed. |
|
|
|
Jan 13 2013, 04:37
Post
#317
|
|
|
Group: Members Posts: 5 Joined: 31-July 12 Member No.: 101901 |
Document is at https://github.com/nu774/qaac/wiki -q controls quality/speed trade off, and 2 is highest in quality, slowest in speed. -------------------- [center]24bit/48kHz/5.1 or bust.[/center]
|
|
|
|
Jan 13 2013, 12:38
Post
#318
|
|
|
Group: Members Posts: 339 Joined: 24-November 08 Member No.: 63072 |
it's 2.11 now
QUOTE [qaac] release 2.11 (refalac 1.11) posted 47 minutes ago by nu 774 Changed --tag option behavior to be strict. Formerly, when fourcc passed by --tag is unknown, qaac accepted it and wrote it as UTF8 string tag. Now --tag accepts only known tags. This is considered to be more foolproof, since iTunes is known to refuse editing tags when a file contains unknown tag atoms. Read vorbis comment "WAVEFORMATEXTENSIBLE_CHANNEL_MASK" of FLAC and treat as channel layout. Fixed a bug: mono AIFF/CAF file with kAudioChannelLabel_Mono in chan chunk could not be read. https://sites.google.com/site/qaacpage/cabinet |
|
|
|
Jan 15 2013, 13:53
Post
#319
|
|
|
Group: Members Posts: 33 Joined: 25-November 12 Member No.: 104754 |
Why does qaac seem to be slightly changing the duration of my audio file?
This is the command I am running: QUOTE qaac.exe --tvbr 90 --quality 2 --rate keep --ignorelength S01E01.wav -o S01E01.aac I am using "--ignorelength" because usually I run this command with piped WAV input from eac3to. The result I get with MediaInfo (showing milliseconds with Debug>Advanced Mode): S01E01.wav - Duration: 1h 26mn 25s 664ms S01E01.aac - Duration: 1h 26mn 25s 728ms The audio file duration grew by 64 milliseconds - now I understand that this isn't very much --- but it is very slightly noticable out-of-sync when people are talking in my remuxed video file. Why should qaac be changing the duration of a source wav file? How can I get qaac to give me an AAC file with the exact same number of milliseconds as my source WAV file? This post has been edited by robertcollier4: Jan 15 2013, 14:03 |
|
|
|
Jan 15 2013, 14:12
Post
#320
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
Read this:
http://lame.sourceforge.net/tech-FAQ.txt This is the FAQ of LAME, but mostly the same for ALL MDCT based lossy codec. For allowing gapless playback, iTunes introduced a special tag (metadata) named "iTunSMPB" to declare amount of encoder delay, valid number of samples, and padding. Some players supporting it (such as fb2k or Rockbox) can playback resulting m4a files gaplessly (without any amount of delay or padding). In short, that is a not problem of qaac. |
|
|
|
Jan 15 2013, 15:11
Post
#321
|
|
|
Group: Members Posts: 33 Joined: 25-November 12 Member No.: 104754 |
Read this: http://lame.sourceforge.net/tech-FAQ.txt Okay, thank you for the info and the great app. Since the documentation indicated that these encoders usually add the delay at the beginning of the file, I added delay of "-64" to mkvmerge to compensate and the resultant video seems to be in perfect sync again. |
|
|
|
Jan 15 2013, 15:18
Post
#322
|
|
![]() Group: Developer Posts: 295 Joined: 22-November 10 From: Japan Member No.: 85902 |
FYI, the amount of delay of Apple LC-AAC encoder is 2112 samples (= 44ms for 48000Hz).
|
|
|
|
Jan 15 2013, 18:02
Post
#323
|
|
|
Group: Members Posts: 38 Joined: 26-May 02 Member No.: 2129 |
Read this: http://lame.sourceforge.net/tech-FAQ.txt Okay, thank you for the info and the great app. Since the documentation indicated that these encoders usually add the delay at the beginning of the file, I added delay of "-64" to mkvmerge to compensate and the resultant video seems to be in perfect sync again. Just as a note: mkvmerge should be able to automatically read and apply the delay from aforementioned iTunSMPB tag. You have output to m4a insteads of adts aac, though. (There have been some changes to mkvmerge's mp4 handling recently, so I suggest you test the result once to see if it still works reliably. Get the newest pre from here.) @nu774 Maybe you could add a "--nodelay" parameter to qaac. Since you already have implemented a delay switch, I guess it's trivial for you to implement and it could be useful for video encoding where gap-less playback does not matter. This post has been edited by sneaker: Jan 15 2013, 18:03 |
|
|
|
Jan 15 2013, 20:18
Post
#324
|
|
|
Group: Members Posts: 33 Joined: 25-November 12 Member No.: 104754 |
Just as a note: mkvmerge should be able to automatically read and apply the delay from aforementioned iTunSMPB tag. You have output to m4a insteads of adts aac, though. (There have been some changes to mkvmerge's mp4 handling recently, so I suggest you test the result once to see if it still works reliably. Get the newest pre from here.) Okay, great. I found the file created by qaac did have a iTunSMPB tag which is explained how to decipher here. tool qaac 2.11, CoreAudioToolbox 7.9.7.9, AAC-LC Encoder, TVBR q91, Quality 96 iTunSMPB 00000000 00000840 000003C0 000000000ED61800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Encoder Delay = 0x00000840 = 2112 samples = 44ms Padding = 0x000003C0 = 960 samples = 20 ms Original Sample Count = 0x000000000ED61800 = 248911872 samples = 5185664 ms So the m4a file produced by qaac does contain all the perfectly encoded information. And the original sample count matches the original wav file. The 64 ms extra is accounted for by the "Encoder Delay" and "Padding". I tried latest mkvtoolnix-unicode-5.9.0-build20130108-490. When adding the m4a file with this iTunSMPB tag into mmg.exe (mkvmerge GUI) - it does not auto populate the "Delay (in ms)" field in the "Format specific options" tab. The "Delay (in ms)" field remains blank even when loading a m4a file with the above iTunSMPB tag. I have to manually type in "-64" to have it compensate for the 44ms+20ms delays introduced. It would be nice if mkvmerge would automatically add a negative delay corresponding to "Encoder Delay" + "Padding". This post has been edited by robertcollier4: Jan 15 2013, 20:21 |
|
|
|
Jan 15 2013, 20:31
Post
#325
|
|
|
Group: Members Posts: 38 Joined: 26-May 02 Member No.: 2129 |
1. Neither mkvmerge nor mkvmerge GUI display any information about applying the delay, but they still do it in the background. Also note that mkvmerge applies negative delays by dropping all packets that would start before 0 and delays the first packet that does not get dropped if necessary, so tools like MediaInfo might show a small ( smaller than the length of a packet) positive delay.
2. You must not add the padding to the delay value. Padding is at the end of the file. 3. the iTunSMPB tag info is only correct for LC. This post has been edited by sneaker: Jan 15 2013, 20:45 |
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 21st May 2013 - 14:49 |