Attention is currently required from: pespin, dexter.
3 comments:
File src/common/l1sap.c:
Patch Set #3, Line 1308: static inline bool nonamr_mand_sid_position(struct gsm_lchan *lchan,
fr_efr_sid_position() would be more inline with the rest.
But this particular function is not limited to FR & EFR, this one already supports TCH/H too, so it is good for all 3 non-AMR codecs.
Patch Set #3, Line 1415: } else
missing {} in this else following a multiple line if.
Fair enough - I'll fix it in the next revision.
Patch Set #3, Line 1441: if (!resp_msg && lchan->tch.dtx_fr_efr.last_rtp_input_was_sid &&
I'd welcome if you could give a try to see if you can simplify a bit these code paths below, even if […]
In the classic GSM architecture this logic was split between two separate components: the first part in the TRAU, the second part in the BTS. The part in the TRAU would cache and repeat the last valid SID per the rules of TS 28.062 section C.3.2.1.1, and the part in the BTS would then throw away most of those SID copies, keeping only those in the right positions per GSM 06.31/06.81 section 5.1.2.
If we were to replicate that most-classic approach in OsmoBTS, the code would first resurrect a cached SID copy with l1sap_msgb_alloc(), and then just a few lines later toss it with msgb_free() - it would be very clean logically and exactly replicate what the specs intended, but do we really want the silliness and inefficiency of l1sap_msgb_alloc() immediately followed by msgb_free() for almost every frame position during periods of DTX silence?
The code I have right now seems to be the best compromise between cleanness and efficiency - the flow of code from the top to the bottom of the screen-full exactly follows the logical order of conceptually separate transformations and state changes.
To view, visit change 32714. To unsubscribe, or for help writing mail filters, visit settings.