--
---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
@kaiduan
--
Hi all,I created a patch to support H.264 baseline webrtc video call to Google Chrome using OpenH264 from CISCO.
The patch is based on Google Chrome Release 31.0.1650.63, and tested on Mac.
o=- 2929974430173482030 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS 4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH
m=audio 1 RTP/SAVPF 111 103 9 102 0 8 106 105 13 127 126
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:csvcrnNYZOjdCT0g
a=ice-pwd:632AfmwA9mxyTRd+Fa1hPnTK
a=ice-options:google-ice
a=fingerprint:sha-1 98:9B:36:32:F0:E6:A8:6B:94:15:29:53:D9:D5:14:9E:DA:65:FC:28
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:9 G722/16000
a=rtpmap:102 ILBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:127 red/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:1123795929 cname:CPLUvZsbx5YoG4lJ
a=ssrc:1123795929 msid:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH 4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH00
a=ssrc:1123795929 mslabel:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH
a=ssrc:1123795929 label:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH00
m=video 1 RTP/SAVPF 101 116 117 96
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:csvcrnNYZOjdCT0g
a=ice-pwd:632AfmwA9mxyTRd+Fa1hPnTK
a=ice-options:google-ice
a=fingerprint:sha-1 98:9B:36:32:F0:E6:A8:6B:94:15:29:53:D9:D5:14:9E:DA:65:FC:28
a=setup:actpass
a=mid:video
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:101 H264/90000
a=rtcp-fb:101 ccm fir
a=rtcp-fb:101 nack
a=rtcp-fb:101 nack pli
a=rtcp-fb:101 goog-remb
a=rtpmap:116 red/90000
a=rtpmap:117 ulpfec/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
a=ssrc-group:FID 950831764 587119607
a=ssrc:950831764 cname:CPLUvZsbx5YoG4lJ
a=ssrc:950831764 msid:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH 4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH01
a=ssrc:950831764 mslabel:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH
a=ssrc:950831764 label:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH01
a=ssrc:587119607 cname:CPLUvZsbx5YoG4lJ
a=ssrc:587119607 msid:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH 4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH01
a=ssrc:587119607 mslabel:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH
a=ssrc:587119607 label:4nP5yeIDzbUm6IJho5jkTps1lnfabsFvTXjH01
You received this message because you are subscribed to a topic in the Google Groups "discuss-webrtc" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/discuss-webrtc/U-y3or-dBOU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to discuss-webrt...@googlegroups.com.
{kVp8PayloadName, 100, -1, 0}
WebRtcVideoChannelRecvInfo* info) {
if (apt_it != associated_payload_types_.end()) {
std::map<int, webrtc::VideoCodec*>::iterator codec_it =
pt_to_codec.find(apt_it->second);
// We currently only support RTX associated with VP8 due to limitations
// in webrtc where only one RTX payload type can be registered.
valid_apt = codec_it != pt_to_codec.end() &&
_stricmp(codec_it->second->plName, kH264PayloadName) == 0;
}
if (!valid_apt) {
LOG(LS_ERROR) << "The RTX codec isn't associated with a known and "
"supported payload type";
return false;
}
ninja: Entering directory `out/Debug/'ninja: warning: multiple rules generate icudtl.dat. builds involving this target will not be correct; continuing anyway[1932/2297] CXX obj/webrtc/modules/video_coding/codecs/h264/webrtc_h264.h264_impl.oFAILED: /home/adminuser/webrtc/trunk/third_party/android_tools/ndk//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ -MMD -MF obj/webrtc/modules/video_coding/codecs/h264/webrtc_h264.h264_impl.o.d -DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -D_FILE_OFFSET_BITS=64 -DNO_TCMALLOC -DDISABLE_NACL -DCHROMIUM_BUILD -DUSE_LIBJPEG_TURBO=1 -DENABLE_WEBRTC=1 -DUSE_PROPRIETARY_CODECS -DENABLE_BROWSER_CDMS -DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY -DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DENABLE_EGLIMAGE=1 -DENABLE_AUTOFILL_DIALOG=1 -DCLD_VERSION=1 -DCLD_DATA_FROM_STATIC -DENABLE_PRINTING=1 -DENABLE_MANAGED_USERS=1 -DVIDEO_HOLE=1 -DWEBRTC_RESTRICT_LOGGING -DWEBRTC_MODULE_UTILITY_VIDEO -DWEBRTC_ARCH_ARM -DWEBRTC_ARCH_ARM_V7 -DWEBRTC_ARCH_ARM_NEON -DWEBRTC_POSIX -DWEBRTC_LINUX -DWEBRTC_ANDROID -DWEBRTC_ANDROID_OPENSLES -DUSE_OPENSSL=1 -DUSE_OPENSSL_CERTS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DANDROID -D__GNU_SOURCE=1 -DUSE_STLPORT=1 -D_STLP_USE_PTR_SPECIALIZATIONS=1 '-DCHROME_BUILD_ID=""' -DHAVE_SYS_UIO_H -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_DEBUG -Igen -I../.. -I/home/adminuser/webrtc/openh264/codec/api/svc -I/home/adminuser/webrtc/openh264/codec/common -I/home/adminuser/webrtc/openh264/codec/encoder/core/inc -I/home/adminuser/webrtc/openh264/codec/encoder/plus/inc -I/home/adminuser/webrtc/openh264/codec/processing/interface -I../../webrtc/modules/video_coding/codecs/h264/include -I../../webrtc/common_video/interface -I../../webrtc/modules/video_coding/codecs/interface -I../../webrtc/modules/interface -I../../webrtc/common_video/interface -I../../webrtc/common_video/libyuv/include -I../../webrtc/system_wrappers/interface -fstack-protector --param=ssp-buffer-size=4 -Werror -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wno-strict-overflow -fno-builtin-cos -fno-builtin-sin -fno-builtin-cosf -fno-builtin-sinf -march=armv7-a -mtune=generic-armv7-a -mfpu=neon -mfloat-abi=softfp -mthumb -fno-tree-sra -fno-partial-inlining -fno-early-inlining -fno-tree-copy-prop -fno-tree-loop-optimize -fno-move-loop-invariants -fno-caller-saves -Wno-psabi -mthumb-interwork -ffunction-sections -funwind-tables -g -fstack-protector -fno-short-enums -finline-limit=64 -Wa,--noexecstack --sysroot=/home/adminuser/webrtc/trunk/third_party/android_tools/ndk//platforms/android-14/arch-arm -I/home/adminuser/webrtc/trunk/third_party/android_tools/ndk//sources/cxx-stl/stlport/stlport -Os -g -fomit-frame-pointer -fdata-sections -ffunction-sections -funwind-tables -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -Wnon-virtual-dtor -Woverloaded-virtual -Wno-abi -std=gnu++11 -Wno-narrowing -Wno-literal-suffix -c ../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc -o obj/webrtc/modules/video_coding/codecs/h264/webrtc_h264.h264_impl.o../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc: In member function 'virtual int webrtc::H264EncoderImpl::Encode(const webrtc::I420VideoFrame&, const webrtc::CodecSpecificInfo*, const std::vector<webrtc::VideoFrameType>*)':../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc:230:38: error: 'const struct SLayerBSInfo' has no member named 'iNalLengthInByte' layer_size += layer_bs_info->iNalLengthInByte[nal_index]; ^../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc:235:58: error: 'const struct SLayerBSInfo' has no member named 'iNalLengthInByte' encoded_image_._length = layer_bs_info->iNalLengthInByte[nal_index] - 4; ^../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc: In member function 'virtual int webrtc::H264DecoderImpl::Decode(const webrtc::EncodedImage&, bool, const webrtc::RTPFragmentationHeader*, const webrtc::CodecSpecificInfo*, int64_t)':../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc:427:109: error: invalid conversion from 'void**' to 'unsigned char**' [-fpermissive] DECODING_STATE rv = decoder_->DecodeFrame2(buffer_with_start_code_, encoded_image_size, data, &buffer_info); ^In file included from ../../webrtc/modules/video_coding/codecs/h264/h264_impl.h:17:0, from ../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc:14:/home/adminuser/webrtc/openh264/codec/api/svc/codec_api.h:110:33: error: initializing argument 3 of 'virtual DECODING_STATE ISVCDecoder::DecodeFrame2(const unsigned char*, int, unsigned char**, SBufferInfo*)' [-fpermissive] virtual DECODING_STATE EXTAPI DecodeFrame2 (const unsigned char* pSrc, ^[1932/2297] CC obj/webrtc/modules/audio_coding/codecs/isac/fix/source/iSACFix.decode.oninja: build stopped: subcommand failed.
--
---
You received this message because you are subscribed to a topic in the Google Groups "discuss-webrtc" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/discuss-webrtc/U-y3or-dBOU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to discuss-webrt...@googlegroups.com.
what other encode does webrtc use then?
../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc: In member function 'virtual int webrtc::H264EncoderImpl::Encode(const webrtc::I420VideoFrame&, const webrtc::CodecSpecificInfo*, const std::vector<webrtc::VideoFrameType>*)':
../../webrtc/modules/video_coding/codecs/h264/h264_impl.cc:224:38: error: 'const struct SLayerBSInfo' has no member named 'iNalLengthInByte'
--
---
You received this message because you are subscribed to a topic in the Google Groups "discuss-webrtc" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/discuss-webrtc/U-y3or-dBOU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to discuss-webrt...@googlegroups.com.
56c56
< WelsDestroySVCEncoder(encoder_);
---
> DestroySVCEncoder(encoder_);
106c106
< ret_val = WelsCreateSVCEncoder(&encoder_);
---
> ret_val = CreateSVCEncoder(&encoder_);
121,123c121
< //param.iInputCsp = videoFormatI420;
< param.iUsageType = CAMERA_VIDEO_REAL_TIME;
< param.iRCMode = RC_QUALITY_MODE;
---
> param.iInputCsp = videoFormatI420;
130c128
< WelsDestroySVCEncoder(encoder_);
---
> DestroySVCEncoder(encoder_);
226c224
< layer_size += layer_bs_info->pNalLengthInByte[nal_index];
---
> layer_size += layer_bs_info->iNalLengthInByte[nal_index];
231c229
< encoded_image_._length = layer_bs_info->pNalLengthInByte[nal_index] - 4;
---
> encoded_image_._length = layer_bs_info->iNalLengthInByte[nal_index] - 4;
314c312
< ret_val = WelsCreateDecoder(&decoder_);
---
> ret_val = CreateDecoder(&decoder_);
322c320
< dec_param.eOutputColorFormat = videoFormatI420;
---
> dec_param.iOutputColorFormat = videoFormatI420;
324c322
< dec_param.eEcActiveIdc = ERROR_CON_FRAME_COPY;
---
> dec_param.uiEcActiveFlag = 1;
329c327
< WelsDestroyDecoder(decoder_);
---
> DestroyDecoder(decoder_);
423c421
< DECODING_STATE rv = decoder_->DecodeFrame2(buffer_with_start_code_, encoded_image_size, (unsigned char**)data, &buffer_info);
---
> DECODING_STATE rv = decoder_->DecodeFrame2(buffer_with_start_code_, encoded_image_size, data, &buffer_info);
466c464
< WelsDestroyDecoder(decoder_);
---
> DestroyDecoder(decoder_);
As i saw in thirdparty/webrtc module of chrome38, it has support for h264 (although bit diff than this patch)
Libjingle didnt have h264 as prefered codec though.
So even i am curious to know the same :)
Sent from Samsung Galaxy S2
I got this patch to work with the latest Chromium. I attached the files I needed to change. One note, to improve video quality I had to increase the bitrate. I did this in h264_impl.cc.
param.iTargetBitrate = 128000;
Works really well for me now, I test using apprtc.
https://apprtc.appspot.com/?r=87227771&debug=loopback
-Enda
On Monday, April 28, 2014 9:45:52 AM UTC+1, Phil Yu wrote:Hi KaiduanCould you porting this (H264 on webrtc) on newest chrome releasethanks