<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
I agree, thank you very much Klaus. Patch commited.<br>
<br>
BR<br>
Sergio<br>
<br>
Klaus Darilion escribió:
<blockquote cite="mid:487741DC.9080100@pernau.at" type="cite">
<pre wrap="">Hi Sergio!
I think if we define blocksize as in the previous mail, the code for
if2->AMR conversion is wrong and should be:
/*If amr+TOC needs a byte more than if2 */
if(stuf < 4)
{
/* Set last byte */
data[bs] = data[bs - 1] << 4;
/*Increase size of frame*/
send->datalen++;
/* For each byte */
for(j=bs-1; j>0; j--)
data[j] = data[j] >> 4 | data[j-1] << 4;
}
else
{
/* For each byte */
for(j=bs; j>0; j--)
data[j] = data[j] >> 4 | data[j-1] << 4;
}
instead of
/*If amr has a byte more than if2 */
if(stuf < 4)
{
/* Set last byte */
data[bs] = data[bs - 1] << 4;
/*Increase size of frame*/
send->datalen++;
}
/* For each byte */
for(j=bs-1; j>0; j--)
data[j] = data[j] >> 4 | data[j-1] << 4;
regards
klaus
Klaus Darilion schrieb:
</pre>
<blockquote type="cite">
<pre wrap="">Again the same old story :-) Whe should have documented that. It is up
to use how we define the term "blocksize". It can be either the size of
the frame received from libh324m (in if2 format) or the size of the AMR
frame used in ast_frame (octed aligned RFC 3267 mode).
I think the code now handles "blocksize" as the octed-aligned AMR frame
size. Currently the blocksize is mixed (before it was if2). What about
this wording:
These are the different AMR modes (Table 1 from RFC 3267)
Class A total speech
Index Mode bits bits
----------------------------------------
0 AMR 4.75 42 95
1 AMR 5.15 49 103
2 AMR 5.9 55 118
3 AMR 6.7 58 134
4 AMR 7.4 61 148
5 AMR 7.95 75 159
6 AMR 10.2 65 204
7 AMR 12.2 81 244
8 AMR SID 39 39
Table 1. The number of class A bits for the AMR codec.
Asterisk's internal AMR format:
===============================
Asterisk internally use the "octed-aligned" RTP format in ast_frame.
(see section 4.4 in RFC 3267)
This allows to have multiple AMR frames in one Asterisk frame. This
means, the payload of an ast_frame wich contains N AMR frames consists
of (se also section 4.4.5.1 of RFC 3267):
1. 1 byte CMR (codec mode request)
2. N byte TOC (the TOC contains the AMR mode of the respecitve frame
and one bit which tells us if it is the last TOC or if there are
some more)
3. blocksize(AMR frame 0) + ..... + blocksize(AMR frame N)
We define the blocksize of an AMR frame os the number of bytes needed
to contain an AMR frame in the respective mode. Thus, it is the number
of total speech bits divided by 8 and rounded upwards.
E.g. an AMR frame in mode 5 has 159 bits. To store this frame we need
20 bytes. Thus, the blocksize of an AMR frame in mode 5 is 20 bytes.
H324M AMR format:
=================
In H324M, the AMR frames received from are in if2 format from libh324m.
(see Annex A in TS 26.101). This means that there are 4 bits for the AMR
mode followed by the speech bits. E.g. an AMR frame in mode 5 in if format
needs 159+4 => 21 bytes.
There is always only one AMR frame in an if2 packet.
Extended Table 1:
==================
Class A total speech block if2 frame
Index Mode bits bits size size
-------------------------------------------------------------
0 AMR 4.75 42 95 12 13
1 AMR 5.15 49 103 13 14
2 AMR 5.9 55 118 15 16
3 AMR 6.7 58 134 17 18
4 AMR 7.4 61 148 19 19
5 AMR 7.95 75 159 20 21
6 AMR 10.2 65 204 26 26
7 AMR 12.2 81 244 31 31
8 AMR SID 39 39 5 6
regards
klaus
Sergio Garcia Murillo schrieb:
</pre>
<blockquote type="cite">
<pre wrap="">Hi Klaus,
I used an advanced method called try & error ;)
The original values were taken from the mpeg4ip packetization code, the
latest changes in the values from the low
bit rates ones are due to an error reproducing a mp4 file created with
ffmpeg at those bit rates and adjusted them til
everything worked again.
If everyone find any mode not working just let me know and I'll try to
fix it. Or if anyone knows how to calculate the
correct ones then please tell me.
Best regards
Sergio
Klaus Darilion escribió:
</pre>
<blockquote type="cite">
<pre wrap="">Hi Sergio!
I wonder how you calculate the block size - I can not reproduce it.
Is it just dividing the bits of table 1 in RFC 3267 by 8 and rounding or
is there some more magic?
thanks
klaus
_______________________________________________
--Bandwidth and Colocation Provided by <a class="moz-txt-link-freetext" href="http://www.api-digital.com">http://www.api-digital.com</a>--
asterisk-video mailing list
To UNSUBSCRIBE or update options visit:
<a class="moz-txt-link-freetext" href="http://lists.digium.com/mailman/listinfo/asterisk-video">http://lists.digium.com/mailman/listinfo/asterisk-video</a>
</pre>
</blockquote>
<pre wrap="">
_______________________________________________
--Bandwidth and Colocation Provided by <a class="moz-txt-link-freetext" href="http://www.api-digital.com">http://www.api-digital.com</a>--
asterisk-video mailing list
To UNSUBSCRIBE or update options visit:
<a class="moz-txt-link-freetext" href="http://lists.digium.com/mailman/listinfo/asterisk-video">http://lists.digium.com/mailman/listinfo/asterisk-video</a>
</pre>
</blockquote>
<pre wrap="">_______________________________________________
--Bandwidth and Colocation Provided by <a class="moz-txt-link-freetext" href="http://www.api-digital.com">http://www.api-digital.com</a>--
asterisk-video mailing list
To UNSUBSCRIBE or update options visit:
<a class="moz-txt-link-freetext" href="http://lists.digium.com/mailman/listinfo/asterisk-video">http://lists.digium.com/mailman/listinfo/asterisk-video</a>
</pre>
</blockquote>
<pre wrap=""><!---->
_______________________________________________
--Bandwidth and Colocation Provided by <a class="moz-txt-link-freetext" href="http://www.api-digital.com">http://www.api-digital.com</a>--
asterisk-video mailing list
To UNSUBSCRIBE or update options visit:
<a class="moz-txt-link-freetext" href="http://lists.digium.com/mailman/listinfo/asterisk-video">http://lists.digium.com/mailman/listinfo/asterisk-video</a>
</pre>
</blockquote>
<br>
</body>
</html>