Achaz / Achaz/imsdroid

[ Doubango / IMSDroid ] propositions of patch h264 Single Nal Unit / Negociate h264 profile level / bandwidth on SDP

Open
#225 0 comments 0 reactions 0 assignees View on GitHub
auto-migrated Priority-Medium Type-Defect
Dominant language
Java
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

```
Hi,

Here as a patch file that brings the following improvments and correction:

1/ it implements the single nal unit mode packetization that greatly improve
the interoperability between doubango and other H.264 videophones.

2 ) It fixes the profile / level negociation

3 ) It Adds bandwidth information ( field b= on SDP )

- h264 Single Nal Unit Mode packetization.

Many SIP videophone do not support packetization mode 1 so, this patch makes
djoubango encode in packetization mode 0 that can be decoded even if
packetization mode 1 or 2 is negociated. On the other hand, djoubango will
still be capable of decoding both mode O and 1. In short to be compatible with
all the h264 decoders.

- Profile level negociation

If a remote terminal offers a different profile / level than ours, that
standard mandates that we should negociate the lowset. This patch add this
behavior. The profile/level settings now specify the MAXIMUM profile level
negociable by djoubango.

- Bandwidth information on SDP (b=)

It adds the b=AS:xxx in the SDP according to the negociated profile.
This prevent remote end to send a video bitrate that is too high that causes
slow video decoding on Android.

Building :
ffmpeg
After patch your ffmpeg , make clean , make all and copy new static libraries
and includes in doubango/thirdparties/android/xxxx repository
else you have the archives of build result in attachement on the next thread
(error 400. "That’s an error. 400" by google ;-) .

doubango
copy x264.h x264_config.h on doubango/thirdparties/android/include ( for
x264_nal_t definition )
apply patch on doubango repository and rebuild .

IMSDroid
apply patch and rebuild .

You have IMSDroid V2 patched on file on the next thread (error 400. "That’s
an error. 400" by google ;-) .

files :
doubango_h264SingleNalUnit.patch : patch for doubango V2
IMSDroid_h264SingleNalUnit.patch : patch for imsdroid V2
ffmpeg_h264SingleNalUnit.patch : patch for ffmpeg (git://git.ffmpeg.org/ffmpeg)
doubango.thirdparties.android.tar.gz : result of ffmpeg build (arm5) for
doubango
imsdroid_V2.apk : IMSDroid V2 with all patch .

Best regards

philippe

PS : Have make another solution for SingleNalUnit , with dynamic memory
allocation , but pointer are randomly corrupted , i understand if you have an
idea ?
file : doubango_h264SignleNalDynamic.patch

```

Original issue reported on code.google.com by `verney.p...@gmail.com` on 4 May 2011 at 9:23

Attachments:
- [doubango_h264SingleNalUnit.patch](https://storage.googleapis.com/google-code-attachments/imsdroid/issue-225/comment-0/doubango_h264SingleNalUnit.patch)
- [IMSDroid_h264SingleNalUnit.patch](https://storage.googleapis.com/google-code-attachments/imsdroid/issue-225/comment-0/IMSDroid_h264SingleNalUnit.patch)
- [ffmpeg_h264SingleNalUnit.patch](https://storage.googleapis.com/google-code-attachments/imsdroid/issue-225/comment-0/ffmpeg_h264SingleNalUnit.patch)
- [doubango_h264SignleNalDynamic.patch](https://storage.googleapis.com/google-code-attachments/imsdroid/issue-225/comment-0/doubango_h264SignleNalDynamic.patch)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.