Replies: 2 comments
-
Thank you, I seem to understand. The program finally searches with a step size of 8, and the first frame of 1024 found is not necessarily accurate, is it? It can only be said that the starting frame is within these 8 frames |
Beta Was this translation helpful? Give feedback.
-
I am converting this to a github discussion. Please reply in the discussion if you have more questions. I'd like to keep the issues for things that need fixing in
First, it is important to see that the synchronization bits are not at the start of each block, but mixed with the data bits. So a for example an A block would look for example look like this (but mutch longer): | D 0 D D D 1 D 1 D D 0 D D D 1 D D 0 1 D D 0 | Where D are data bits and there are sync bits with a fixed value of either 0 or 1 between the data bits. So if you crop the audio to less than the size of a data block, there will still be sync bits left within the audio signal. The SyncFinder class implements searching for these sync bits. So for instance a cropped audio would look like this: [cropped] | D 1 D 1 D D 0 D D D 1 D D 0 | [cropped] So all we need to do is search for a sync bit pattern that is a cropped version of the original data block sync bits. Finally,
The step sizes for the sync bit search are 256 and 8 samples. The idea is that we first search with a big step size of 256 samples (1/4 of 1024 sample block length) to find approximate locations for the start of the block. Then we use a smaller step size of 8 to refine the position of the start of the block. |
Beta Was this translation helpful? Give feedback.
-
Hello, thank you for your contribution. But regarding your algorithm, I have a question that I don't quite understand. The size of each A or B block in the algorithm is 2226 * 1024, which is approximately 52 seconds per block. That is, the 510 bit synchronization information and 858 * 2 bit watermark information are hidden in the 2226 * 1024 frame (52 second audio). However, I first watermark the audio and then crop out 15 seconds, and the program can still complete the correct embedding. This is amazing, May I ask how your algorithm works?
Beta Was this translation helpful? Give feedback.
All reactions