Hello everyone,

Just some updates. The SBC task appears to run correctly, it just runs  
too slow to be used for more than ~1s by Bluez. The next task is to  
speed it up. I will crack on with this, but if anyone fancies a look,  
then please feel free and send me advice/patches/abuse/etc.

The output of gprof (run on X86) is shown below:

   %   cumulative   self              self     total
  time   seconds   seconds    calls  Ts/call  Ts/call  name
   0.00      0.00     0.00   160672     0.00     0.00  _sbc_analyze_eight
   0.00      0.00     0.00   160672     0.00     0.00  sbc_analyze_eight
   0.00      0.00     0.00     5023     0.00     0.00  __read
   0.00      0.00     0.00     5021     0.00     0.00  __write
   0.00      0.00     0.00     5021     0.00     0.00  sbc_analyze_audio
   0.00      0.00     0.00     5021     0.00     0.00  sbc_calculate_bits
   0.00      0.00     0.00     5021     0.00     0.00  sbc_crc8
   0.00      0.00     0.00     5021     0.00     0.00  sbc_encode
   0.00      0.00     0.00     5021     0.00     0.00  sbc_pack_frame
   0.00      0.00     0.00        1     0.00     0.00  encode
   0.00      0.00     0.00        1     0.00     0.00  sbc_encoder_init
   0.00      0.00     0.00        1     0.00     0.00  sbc_finish
   0.00      0.00     0.00        1     0.00     0.00  sbc_get_codesize
   0.00      0.00     0.00        1     0.00     0.00  sbc_get_frame_length
   0.00      0.00     0.00        1     0.00     0.00  sbc_init
   0.00      0.00     0.00        1     0.00     0.00  sbc_set_defaults

So basically _sbc_analyze_eight() & sbc_analyze_eight() are the things  
to look at speeding up.

To give people a head start, here is where you should be looking to  
work out how:
A2DP specification which says how the SBC encoder is supposed to work:
http://www.bluetooth.com/NR/rdonlyres/800D10CD-DE3D-4D51-ABC0-726C8DF26151/921/A2DPspecv10.pdf

 From here (Ti DSP docs): http://www.ti.com/sc/docs/psheets/man_dsp.htm

SPRU281F.pdf - TMS320C55x Optimizing C/C++ Compiler User's Guide
Ch3 - Optimizing Your Code

SPRU376A.pdf -  TMS320C55x DSP Programmer?s Guide
Ch3 - Optimizing C Code

SPRU422I.pdf - TMS320C55x DSP Library Programmer?s Reference



On to Tremor. I've gone back to debugging why it doesn't recognise the  
Vorbis stream (while it's unpacking the code books) and it looks like  
some sort of buffer corruption.

Here's the output from the DSP (the = A,B form is low,high 16bits):

[276990.164062] vorbis_book_unpack: check alignment, byte 1 = 17218
[276990.164062] vorbis_book_unpack: check alignment, byte 2 = 86
[276990.164062] vorbis_book_unpack: Mapping Case 0
[276990.164062] vorbis_book_unpack: s->used_entries & 0xFFFF= 128
[276990.164062] vorbis_book_unpack: s->used_entries>>16 & 0xFFFF = 0
[276990.164062] vorbis_book_unpack: s->entries & 0xFFFF= 128
[276990.164062] vorbis_book_unpack: s->entries>>16 & 0xFFFF = 0
[276990.164062] vorbis_book_unpack: s->dec_nodeb=2
[276990.164062] vorbis_book_unpack: s->dec_leafw=1
[276990.164062] _make_words: Entered; n=128, 0; quantvals=0, 0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=0,0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=1,0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=2,0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=3,0
[276990.164062] _make_words: l[i]=6
[276990.164062] _make_words: entry=8,0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=5,0
[276990.164062] _make_words: l[i]=6
[276990.164062] _make_words: entry=9,0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=6,0
[276990.164062] _make_words: l[i]=6
[276990.164062] _make_words: entry=14,0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=8,0
[276990.164062] _make_words: l[i]=6
[276990.164062] _make_words: entry=15,0
[276990.164062] _make_words: l[i]=5
[276990.164062] _make_words: entry=9,0
[276990.164062] _make_words: l[i]=6
[276990.171875] _make_words: entry=20,0
[276990.171875] _make_words: l[i]=5
[276990.171875] _make_words: entry=11,0
[276990.171875] _make_words: l[i]=2
[276990.171875] _make_words: entry=2,0
[276990.171875] _make_words: l[i]=26
[276990.171875] _make_words: entry=0,336
[276990.171875] _make_words: l[i]=5
[276990.171875] _make_words: entry=12,0
[276990.171875] _make_words: l[i]=31
[276990.171875] _make_words: entry=32,10752
[276990.171875] _make_words: l[i]=18
[276990.171875] _make_words: entry=20481,1
[276990.171875] _make_words: l[i]=30
[276990.171875] _make_words: entry=17,5376
[276990.171875] _make_words: l[i]=12
[276990.171875] _make_words: entry=1345,0
[276990.171875] _make_words: l[i]=3
[276990.171875] _make_words: entry=6,0
[276990.171875] _make_words: l[i]=1
[276990.171875] _make_words: entry=0,0
[276990.171875] _make_words: Overpopulated tree, return -1
[276990.171875] _make_decode_table: _make_words() 2 True
[276990.171875] vorbis_book_unpack: Error in  
_make_decode_table(s,lengthlist,quantvals,opb,mapt
[276990.171875] ype)
[276990.171875] _vorbis_unpack_books: Error in  
vorbis_book_unpack(opb,ci->book_param+i)
[276990.171875] _fetch_headers: ret=vorbis_dsp_headerin(vi,&op) is TRUE
[276990.171875] _ov_open1: About to leave, ret=-133
[276990.171875] ov_open_callbacks: Entered
[276990.171875] Input does not appear to be an Ogg bitstream.

and here's the output from the "pretty much identical" test code  
running on X86:

vorbis_book_unpack: check alignment, byte 1 = 17218
vorbis_book_unpack: check alignment, byte 2 = 86
vorbis_book_unpack: all entries used, no tagging
vorbis_book_unpack: Mapping Case 0
vorbis_book_unpack: s->used_entries=128
vorbis_book_unpack: s->entries=128
vorbis_book_unpack: s->dec_nodeb=2
vorbis_book_unpack: s->dec_leafw=1
_make_words: Entered; n=128, 0; quantvals=0, 0
_make_words: (lower) l[i]=length=5
_make_words: entry=0,0
_make_words: (lower) l[i]=length=5
_make_words: entry=1,0
_make_words: (lower) l[i]=length=5
_make_words: entry=2,0
_make_words: (lower) l[i]=length=5
_make_words: entry=3,0
_make_words: (lower) l[i]=length=6
_make_words: entry=8,0
_make_words: (lower) l[i]=length=5
_make_words: entry=5,0
_make_words: (lower) l[i]=length=6
_make_words: entry=9,0
_make_words: (lower) l[i]=length=5
_make_words: entry=6,0
_make_words: (lower) l[i]=length=6
_make_words: entry=14,0
_make_words: (lower) l[i]=length=5
_make_words: entry=8,0
_make_words: (lower) l[i]=length=6
_make_words: entry=15,0
_make_words: (lower) l[i]=length=5
_make_words: entry=9,0
_make_words: (lower) l[i]=length=6
_make_words: entry=20,0
_make_words: (lower) l[i]=length=5
_make_words: entry=11,0
_make_words: (lower) l[i]=length=6
_make_words: entry=21,0
_make_words: (lower) l[i]=length=5
_make_words: entry=12,0
_make_words: (lower) l[i]=length=6
_make_words: entry=26,0
_make_words: (lower) l[i]=length=5
_make_words: entry=14,0
_make_words: (lower) l[i]=length=6
_make_words: entry=27,0
_make_words: (lower) l[i]=length=5
_make_words: entry=15,0
_make_words: (lower) l[i]=length=6
_make_words: entry=32,0
_make_words: (lower) l[i]=length=5
_make_words: entry=17,0
_make_words: (lower) l[i]=length=7
_make_words: entry=66,0
_make_words: (lower) l[i]=length=5
_make_words: entry=18,0
_make_words: (lower) l[i]=length=7
_make_words: entry=67,0
_make_words: (lower) l[i]=length=5
_make_words: entry=19,0
_make_words: (lower) l[i]=length=7
_make_words: entry=80,0
_make_words: (lower) l[i]=length=5
_make_words: entry=21,0
_make_words: (lower) l[i]=length=8
_make_words: entry=162,0
_make_words: (lower) l[i]=length=5
_make_words: entry=22,0
_make_words: (lower) l[i]=length=8
_make_words: entry=163,0
_make_words: (lower) l[i]=length=6
_make_words: entry=41,0
_make_words: (lower) l[i]=length=8
_make_words: entry=184,0
_make_words: (lower) l[i]=length=6
_make_words: entry=47,0
_make_words: (lower) l[i]=length=9
_make_words: entry=370,0
_make_words: (lower) l[i]=length=6
_make_words: entry=48,0
_make_words: (lower) l[i]=length=9
_make_words: entry=371,0
_make_words: (lower) l[i]=length=6
_make_words: entry=49,0
_make_words: (lower) l[i]=length=9
_make_words: entry=372,0
_make_words: (lower) l[i]=length=6
_make_words: entry=50,0
_make_words: (lower) l[i]=length=10
_make_words: entry=746,0
_make_words: (lower) l[i]=length=6
_make_words: entry=51,0
_make_words: (lower) l[i]=length=10
_make_words: entry=747,0
_make_words: (lower) l[i]=length=6
_make_words: entry=52,0
_make_words: (lower) l[i]=length=11
_make_words: entry=1496,0
_make_words: (lower) l[i]=length=6
_make_words: entry=53,0
_make_words: (lower) l[i]=length=11
_make_words: entry=1497,0
_make_words: (lower) l[i]=length=6
_make_words: entry=54,0
_make_words: (lower) l[i]=length=11
_make_words: entry=1498,0
_make_words: (lower) l[i]=length=6
_make_words: entry=55,0
_make_words: (lower) l[i]=length=12
_make_words: entry=2998,0
_make_words: (lower) l[i]=length=6
_make_words: entry=56,0
_make_words: (lower) l[i]=length=12
_make_words: entry=2999,0
_make_words: (lower) l[i]=length=7
_make_words: entry=114,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3000,0
_make_words: (lower) l[i]=length=7
_make_words: entry=115,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3001,0
_make_words: (lower) l[i]=length=7
_make_words: entry=116,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3002,0
_make_words: (lower) l[i]=length=7
_make_words: entry=117,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3003,0
_make_words: (lower) l[i]=length=7
_make_words: entry=118,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3004,0
_make_words: (lower) l[i]=length=7
_make_words: entry=119,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3005,0
_make_words: (lower) l[i]=length=7
_make_words: entry=120,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3006,0
_make_words: (lower) l[i]=length=7
_make_words: entry=121,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3007,0
_make_words: (lower) l[i]=length=7
_make_words: entry=122,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3936,0
_make_words: (lower) l[i]=length=7
_make_words: entry=124,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3937,0
_make_words: (lower) l[i]=length=8
_make_words: entry=247,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3938,0
_make_words: (lower) l[i]=length=8
_make_words: entry=250,0
_make_words: (lower) l[i]=length=11
_make_words: entry=1970,0
_make_words: (lower) l[i]=length=8
_make_words: entry=251,0
_make_words: (lower) l[i]=length=11
_make_words: entry=1971,0
_make_words: (lower) l[i]=length=8
_make_words: entry=252,0
_make_words: (lower) l[i]=length=12
_make_words: entry=3939,0
_make_words: (lower) l[i]=length=9
_make_words: entry=493,0
_make_words: (lower) l[i]=length=11
_make_words: entry=2024,0
_make_words: (lower) l[i]=length=9
_make_words: entry=507,0
_make_words: (lower) l[i]=length=9
_make_words: entry=508,0
_make_words: (lower) l[i]=length=10
_make_words: entry=1013,0
_make_words: (lower) l[i]=length=11
_make_words: entry=2025,0
_make_words: (lower) l[i]=length=9
_make_words: entry=509,0
_make_words: (lower) l[i]=length=12
_make_words: entry=4080,0
_make_words: (lower) l[i]=length=9
_make_words: entry=511,0
_make_words: (lower) l[i]=length=12
_make_words: entry=4081,0
_make_words: (lower) l[i]=length=12
_make_words: entry=4082,0
_make_words: (lower) l[i]=length=14
_make_words: entry=16332,0
_make_words: (lower) l[i]=length=13
_make_words: entry=8167,0
_make_words: (lower) l[i]=length=13
_make_words: entry=8168,0
_make_words: (lower) l[i]=length=14
_make_words: entry=16333,0
_make_words: (lower) l[i]=length=13
_make_words: entry=8169,0
_make_words: (lower) l[i]=length=13
_make_words: entry=8170,0
_make_words: (lower) l[i]=length=13
_make_words: entry=8171,0
_make_words: (lower) l[i]=length=12
_make_words: entry=4086,0
_make_words: (lower) l[i]=length=14
_make_words: entry=16348,0
_make_words: (lower) l[i]=length=16
_make_words: entry=65396,0
_make_words: (lower) l[i]=length=20
_make_words: entry=63312,15
_make_words: (lower) l[i]=length=20
_make_words: entry=63313,15
_make_words: (lower) l[i]=length=21
_make_words: entry=61092,31
_make_words: (lower) l[i]=length=14
_make_words: entry=16350,0
_make_words: (lower) l[i]=length=14
_make_words: entry=16351,0
_make_words: (lower) l[i]=length=15
_make_words: entry=32699,0
_make_words: (lower) l[i]=length=21
_make_words: entry=61093,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61094,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61095,31
_make_words: (lower) l[i]=length=20
_make_words: entry=63316,15
_make_words: (lower) l[i]=length=21
_make_words: entry=61098,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61099,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61100,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61101,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61102,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61103,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61104,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61105,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61106,31
_make_words: (lower) l[i]=length=21
_make_words: entry=61107,31
_make_words: (lower) l[i]=length=20
_make_words: entry=63322,15
_make_words: (lower) l[i]=length=20
_make_words: entry=63323,15
_make_words: (lower) l[i]=length=20
_make_words: entry=63324,15
_make_words: (lower) l[i]=length=20
_make_words: entry=63325,15
_make_words: (lower) l[i]=length=20
_make_words: entry=63326,15
_make_words: (lower) l[i]=length=20
_make_words: entry=63327,15

Time to work out why that's happening. Sounds like fun! ;) Any  
thoughts & help appreciated of course.

Cheers,


Simon



_______________________________________________
maemo-developers mailing list
maemo-developers@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-developers

Reply via email to