Commit Graph

24 Commits

Author SHA1 Message Date
fddf6e526c Use WebRTC logging in MediaCodec JNI code.
Also enable HW encoder scaling in AppRTCDemo.

R=wzh@webrtc.org

Review URL: https://codereview.webrtc.org/1396653002 .

Cr-Commit-Position: refs/heads/master@{#10205}
2015-10-07 23:51:20 +00:00
91b348c702 Android MediaCodecVideoDecoder: Manage lifetime of texture frames
This CL should be the last one in a series to finally unblock camera texture capture.

The SurfaceTexture.updateTexImage() calls are moved from the video renderers into MediaCodecVideoDecoder, and the destructor of the texture frames will signal MediaCodecVideoDecoder that the frame has returned. This CL also removes the SurfaceTexture from the native handle and only exposes the texture matrix instead, because only the video source should access the SurfaceTexture.

BUG=webrtc:4993
R=glaznev@webrtc.org, perkj@webrtc.org

Review URL: https://codereview.webrtc.org/1378033003 .

Cr-Commit-Position: refs/heads/master@{#10203}
2015-10-07 20:57:17 +00:00
0c4e06b4c6 Use suffixed {uint,int}{8,16,32,64}_t types.
Removes the use of uint8, etc. in favor of uint8_t.

BUG=webrtc:5024
R=henrik.lundin@webrtc.org, henrikg@webrtc.org, perkj@webrtc.org, solenberg@webrtc.org, stefan@webrtc.org, tina.legrand@webrtc.org

Review URL: https://codereview.webrtc.org/1362503003 .

Cr-Commit-Position: refs/heads/master@{#10196}
2015-10-07 10:23:32 +00:00
44bf6f5f67 Android MediaCodecVideoDecoder: Split DecoderOutputBufferInfo into DecodedByteBuffer and DecodedTextureBuffer
This CL separates the types and code paths for textures vs byte buffers in MediaCodecVideoDecoder.dequeueOutputBuffer() and MediaCodecVideoDecoder::DeliverPendingOutputs(). The purpose is to prepare for lifetime management of textures received from the SurfaceTexture.

This CL is a part of the plan in https://codereview.webrtc.org/1357923002/.

BUG=webrtc:4993

Review URL: https://codereview.webrtc.org/1379383002

Cr-Commit-Position: refs/heads/master@{#10156}
2015-10-03 09:08:06 +00:00
7e319372ab Android MediaCodecVideoDecoder: Cleanup to prepare for texture liftime management
This CL should not change the behaviour of the decoder. The purpose is to prepare for lifetime management of textures received from the SurfaceTexture. The main change is to only use exceptions for error signaling in MediaCodecVideoDecoder.dequeueOutputBuffer() and MediaCodecVideoDecoder.releaseOutputBuffer(), not both exceptions and error return values.

BUG=webrtc:4993
R=perkj@webrtc.org

Review URL: https://codereview.webrtc.org/1383983003 .

Cr-Commit-Position: refs/heads/master@{#10148}
2015-10-02 13:49:48 +00:00
bbda54e6fa Android MediaDecoder: Use frame pool to avoid allocations for non-surface decoding
BUG=webrtc:4993

TEST=To test non-surface path, set 'use_surface_ = false' in androidmediadecoder_jni.cc.
R=perkj@webrtc.org

Review URL: https://codereview.webrtc.org/1374153003 .

Cr-Commit-Position: refs/heads/master@{#10116}
2015-09-30 14:06:56 +00:00
91d6edef35 Add RTC_ prefix to (D)CHECKs and related macros.
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.

Alternative solutions:
* Check if we already have defined e.g. CHECK, and don't define them in that case. This makes us depend on include order in Chromium, which is not acceptable.
* Don't allow using the macros in WebRTC headers. Error prone since if someone adds it there by mistake it may compile fine, but later break if a header in added or order is changed in Chromium. That will be confusing and hard to enforce.
* Ensure that headers that are included by an embedder don't include our macros. This would require some heavy refactoring to be maintainable and enforcable.
* Changes in Chromium for this is obviously not an option.

BUG=chromium:468375
NOTRY=true

Review URL: https://codereview.webrtc.org/1335923002

Cr-Commit-Position: refs/heads/master@{#9964}
2015-09-17 07:24:51 +00:00
207370f0a2 Android MediaCodecVideoDecoder: Remove redundant useSurface arguments
This CL should not do any functional changes. It removes some redundant arguments and unnecessary error checking.

BUG=webrtc:4993
R=glaznev@webrtc.org

Review URL: https://codereview.webrtc.org/1338943003 .

Cr-Commit-Position: refs/heads/master@{#9950}
2015-09-16 10:32:32 +00:00
4d2f4d1c69 - Make shared EGL context used for HW video decoding member
of decoder factory class.
- Add new Peer connection factory method to initialize shared
EGL context.

This provides an option to use single peer connection factory
in the application and create peer connections from the same
factory and reinitialize shared EGL context for video
decoding HW acceleration.

R=wzh@webrtc.org

Review URL: https://codereview.webrtc.org/1304063011 .

Cr-Commit-Position: refs/heads/master@{#9838}
2015-09-01 22:04:21 +00:00
782671f798 Improve Android HW decoder error handling.
- Remove an option to use MediaCodec SW decoder from Java layer.
- Better handling Java exceptions in JNI - detect exceptions
and either try to reset the codec or fallback to SW decoder.
- If any error is reported by codec try to fallback to SW
codec for VP8 or reset decoder and continue decoding for H.264.
- Add more logging for error conditions.

R=wzh@webrtc.org

Review URL: https://codereview.webrtc.org/1178943007.

Cr-Commit-Position: refs/heads/master@{#9431}
2015-06-12 23:40:51 +00:00
eb66e800d1 Re-land "Convert native handles to buffers before encoding."
This reverts commit a67675506c9057bd9ffd4d76aae8b743343d434d.

BUG=webrtc:4081
TBR=magjed@webrtc.org

Review URL: https://codereview.webrtc.org/1158273010

Cr-Commit-Position: refs/heads/master@{#9381}
2015-06-05 09:08:12 +00:00
308d163c71 Revert "Convert native handles to buffers before encoding."
This reverts commit a831dc3a7d10a1fbaa258ee6b1ca6cfc7e91c5ca to unblock
rolling into Chromium.

BUG=4081
TBR=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/55549004

Cr-Commit-Position: refs/heads/master@{#9354}
2015-06-02 13:04:31 +00:00
a831dc3a7d Convert native handles to buffers before encoding.
Required to permit conversion of NV12 handles on iOS to I420 for VP8
software encoding, which blocks texture-based capture. This change
enforces that all texture-based input provides a method for converting
native handles to I420 if they are ever used with software encoders that
do not understand the native handles.

BUG=4081
R=emircan@chromium.org, glaznev@webrtc.org, hbos@webrtc.org, magjed@webrtc.org, mflodman@webrtc.org, stefan@webrtc.org, tkchin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50909005

Cr-Commit-Position: refs/heads/master@{#9347}
2015-06-01 18:06:52 +00:00
4765070b8d Rename I420VideoFrame to VideoFrame.
This is a mechanical change since it affects so many
files.
I420VideoFrame -> VideoFrame
and reformatted.

Rationale: in the next CL I420VideoFrame will
get an indication of Pixel Format (I420 for
starters) and of storage type: usually
UNOWNED, could be SHMEM, and in the near
future will be possibly TEXTURE. See
https://codereview.chromium.org/1154153003
for the change that happened in Cr.

BUG=4730, chromium:440843
R=jiayl@webrtc.org, niklas.enbom@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/52629004

Cr-Commit-Position: refs/heads/master@{#9339}
2015-05-30 00:21:56 +00:00
Per
9b3f56ea05 Reland "Remove usage of webrtc::NativeHandle since is just adds an extra level of indirection.""
This reverts commit e41d774c4d0a60066866fc2d0ae48dd0e839ff23.

Original code review: https://webrtc-codereview.appspot.com/43999004/
Reason for reland: There was nothing wrong with this cl as is, but it breaks chrome compatibility. We will now reland this and fix Chrome during roll.

Patset 1: Original cl.
Patchset 2: Removed more code that is no longer needed.

R=magjed@webrtc.org, pbos@webrtc.org
TBR=mflodman@webrtc.org

BUG=1128

Review URL: https://webrtc-codereview.appspot.com/45049004

Cr-Commit-Position: refs/heads/master@{#8956}
2015-04-09 11:44:19 +00:00
Per
e41d774c4d Revert "Remove usage of webrtc::NativeHandle since is just adds an extra level of indirection."
This reverts commit 75db8612588b4fabdf1b05f4ab145f7737093b45.

Revert "Fix build breakage in WrappedI420Buffer::native_handle()"

This reverts commit 3211934ebf7cac3e6df2cb4aacb6e47cc1cffe2b.

Reason for revert: Breaks chrome build and tests on clank, See https://codereview.chromium.org/1067803002/

BUG=1128
TBR=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43079004

Cr-Commit-Position: refs/heads/master@{#8940}
2015-04-07 15:20:56 +00:00
Per
75db861258 Remove usage of webrtc::NativeHandle since is just adds an extra level of indirection.
BUG=1128
R=magjed@webrtc.org, pbos@webrtc.org
TBR=mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43999004

Cr-Commit-Position: refs/heads/master@{#8932}
2015-04-07 10:50:49 +00:00
2056ee3e3c Revert "Changed argument occurences of const I420VideoFrame* to const I420VideoFrame& and non-const I420VideoFrame& to I420VideoFrame*."
This reverts commit r8731.

Reason for revert: Breakes Chromium FYI bots.

TBR=hbos, tommi

Review URL: https://webrtc-codereview.appspot.com/40359004

Cr-Commit-Position: refs/heads/master@{#8733}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8733 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-16 13:48:18 +00:00
93d9d6503e I420VideoFrame.CreateFrame: Removed unnecessary buffer size arguments.
R=magjed@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/45629004

Cr-Commit-Position: refs/heads/master@{#8732}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8732 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-16 13:26:41 +00:00
2dc5fa69b2 Changed argument occurences of const I420VideoFrame* to const I420VideoFrame& and non-const I420VideoFrame& to I420VideoFrame*.
R=magjed@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40299004

Cr-Commit-Position: refs/heads/master@{#8731}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8731 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-16 13:02:19 +00:00
45cdcce5f5 Remove TextureVideoFrame
TextureVideoFrame is currently an empty shell that only provides a convenience constructor of I420VideoFrame with a texture buffer. This CL moves that constructor, and all unittests, of TextureVideoFrame into the base class. Then it's possible to completely remove TextureVideoFrame and all its files. Also, there is no point in having I420VideoFrame virtual anymore.

R=pbos@webrtc.org, perkj@webrtc.org, stefan@webrtc.org
TBR=mflodman

Review URL: https://webrtc-codereview.appspot.com/40229004

Cr-Commit-Position: refs/heads/master@{#8629}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8629 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-06 10:41:47 +00:00
a4623d26d7 Fix H.264 HW decoding for Qualcomm KK devices.
- Qualcomm H.264 HW decoder on KK and older requires
a few video frames before it can generate output. Increase
maximum allowed pending frames for H.264 decoder to 30.
Plus changes in the logging to track decoder buffers
timestamps.

R=wzh@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36319004

Cr-Commit-Position: refs/heads/master@{#8490}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8490 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 00:03:21 +00:00
b28474c7a0 Add H.264 HW encoder and decoder support for Android.
- Allow to configure MediaCodec Java wrapper to use VP8
and H.264 codec.
- Save H.264 config frames with SPS and PPS NALUs and append them to every key frame.
- Correctly handle the case when one encoded frame may generate several output NALUs.
- Add code to find H.264 start codes.
- Add a flag (non configurable yet) to use H.264 in AppRTCDemo.
- Improve MediaCodec logging.

R=wzh@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43379004

Cr-Commit-Position: refs/heads/master@{#8465}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8465 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 17:44:58 +00:00
18c92472df Move Android MediaCodec encoder and decoder factories to separate files.
Move Android media encoder and media decoder factories from
peerconnection_jni.cc to androidmediaencoder_jni.cc and
androidmediadecoder_jni.cc

R=perkj@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36139004

Cr-Commit-Position: refs/heads/master@{#8417}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8417 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-18 18:43:21 +00:00