Commit graph

33 commits

Author SHA1 Message Date
ibaker
f834419744 Add set -eu to all shell scripts
These flags ensure that any errors cause the script to exit (instead of
just carrying on) (`-e`) and that any unrecognised substitution variables
cause an error instead of silently resolving to an empty string (`-u`).

Issues like Issue: google/ExoPlayer#10791 should be more quickly resolved with
`set -e` because the script will clearly fail with an error like
`make: command not found` which would give the user a clear pointer
towards the cause of the problem.

#minor-release

PiperOrigin-RevId: 490001419
2022-11-22 09:51:36 +00:00
Tolriq
6d2e7a1b57 Merge Issue: google/ExoPlayer#10762: Fix ffmpeg jni wrapper returning invalid result codes
Imported from GitHub PR Issue: google/ExoPlayer#10762

This ensure that ffmpeg error code are properly translated to values that the ExoPlayer decoder understand.
The main gain is that it allows the decoder to properly ignore more cases of invalid data and recover.
The second gain is that the other errors are now proper ExoPlayer errors and no more obscure buffer ones.

Fixes: Issue: google/ExoPlayer#10760
Merge 82ceeb77d6df71f5ffb0474db66a36fd6eb8e51a into 972e169bd8
COPYBARA_INTEGRATE_REVIEW=go/exoghi/10762 from Tolriq:ffmpeg_error_code 82ceeb77d6df71f5ffb0474db66a36fd6eb8e51a
PiperOrigin-RevId: 487189910
2022-11-10 14:47:17 +00:00
tonihei
6ea1d0ecf0 Add additional build flags for ffmpeg on "arm64-v8a"
From NDK 23.1.7779620 and above, the arm64-v8a ABI needs additional
build flags to correctly link the ffmpeg libraries.

Issue: google/ExoPlayer#9933
PiperOrigin-RevId: 467161973
2022-10-19 17:57:17 +00:00
aquilescanta
dadfea0211 Force CMake version 3.21.0+ for the FFMPEG extension
Issue: google/ExoPlayer#9933
#minor-release
PiperOrigin-RevId: 434449816
2022-03-15 00:49:09 +00:00
aquilescanta
8151883d7a Depend on llvm-xy bin utils instead of GNU's binutils
NDK 23 removes GNU's bin utils. More info in
https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#binutils.

LLVM bin utils are available in all modern NDK versions.

#minor-release
Issue: google/ExoPlayer#9933
PiperOrigin-RevId: 429299806
2022-02-17 16:16:45 +00:00
olly
db84773c01 Further README tweaks
PiperOrigin-RevId: 402811825
2021-10-13 20:18:36 +01:00
andrewlewis
be1fe08ba5 Add license headers
PiperOrigin-RevId: 394176546
2021-09-02 09:42:10 +01:00
olly
0de6bc861a Format *_jni.cc files
PiperOrigin-RevId: 374830877
2021-05-20 15:40:34 +01:00
bachinger
cdff456621 Make copybara remove the LINT.IfChange tag
PiperOrigin-RevId: 371135534
2021-04-29 17:35:05 +01:00
aquilescanta
054bff80fd Fix ffmpeg build script's strip tool for armeabi-v7a
Broken in bf21e3c690.

PiperOrigin-RevId: 344777455
2020-11-30 16:11:19 +00:00
aquilescanta
1cdf5e79e3 Rename the FFMPEG extension binary to ffmpegJNI
Instead of ffmpeg_jni for consistency with other extensions.

PiperOrigin-RevId: 344411014
2020-11-27 11:07:55 +00:00
aquilescanta
bf21e3c690 Make libffmpeg_jni link statically against ffmpeg
Also make compilation automatically determine the number of
threads to use during compilation.

PiperOrigin-RevId: 344264761
2020-11-27 11:07:15 +00:00
aquilescanta
b866c5e424 Fix the FFmpeg extension build
Since gradle 4.0, CMake imported libraries are bundled in the APK, so
manually bundling them causes a duplication which breaks the build.

Issue: #7906
PiperOrigin-RevId: 332012375
2020-09-16 16:36:59 +01:00
aquilescanta
19602ca4ca Use CMake to build the ffmpeg audio extension
PiperOrigin-RevId: 322793308
2020-07-24 10:48:16 +01:00
olly
0d22d02df5 FFmpeg extension: Correctly pad input buffers
FFmpeg requires input buffers to be sized larger than the size
of the data they contain. This is to allow optimized decoder
implementations that read data in fixed size chunks, without
the risk of such decoders reading beyond the end of the buffer.

Issue: #2159
PiperOrigin-RevId: 310946866
2020-05-14 22:20:55 +01:00
olly
8ae8bf7b21 Split fetching FFmpeg from build_ffmpeg.sh
It makes it harder to work with a different branch. Also make
the FFmpeg instructions consistent with those of the other
extensions (e.g., by removing the "jni" part of the path from
the FFMPEG_EXT_PATH variable.

PiperOrigin-RevId: 310937751
2020-05-14 22:20:36 +01:00
olly
25e0d30760 Consistency fixes for FFmpeg extension instructions
PiperOrigin-RevId: 303316976
2020-03-27 23:32:29 +00:00
olly
9be4c08459 FFmpeg extension cleanup
PiperOrigin-RevId: 303298804
2020-03-27 23:32:11 +00:00
olly
b314da5f02 Rename FfmpegDecoder to FfmpegAudioDecoder
It looks like the video path will use a separate FfmpegVideoDecoder

Issue: #2159
PiperOrigin-RevId: 303068617
2020-03-27 23:31:03 +00:00
krocard
fdf35776f8 Add support for x86_64 for the ffmpeg extension
Requested by https://github.com/google/ExoPlayer/issues/7058.
Additionally move one of the common option in COMMON_OPTIONS.

PiperOrigin-RevId: 299862479
2020-03-10 10:21:29 +00:00
Oliver Woodman
aeea17dd0f Merge pull request #6999 from xufuji456:dev-v2
PiperOrigin-RevId: 298544278
2020-03-10 10:17:13 +00:00
xufulong
6d14c168e2 use swresample instead of avresample, since avresample module has been deprecated. 2020-02-19 22:09:01 +08:00
andrewlewis
a4e7274cca Update audio extension build configurations
- Fix FLAC extension build (currently broken due to use of std::array,
  but fixed by migrating to NDK r20).
- Move opus and ffmpeg extensions to NDK r20. For ffmpeg, upgrade to
  release 4.2 which requires using libswresample and updates to the
  build script.

Issue: #6601
PiperOrigin-RevId: 277924119
2019-11-05 16:16:38 +00:00
kimvde
f133766b40 Improve ffmpeg build instructions
- Simplify the supported formats configuration by moving it to a
  separate variable, therefore avoiding updating the COMMON_OPTIONS
  variable in the ffmpeg build command.
- Move the ffmpeg build command to a shell script.

PiperOrigin-RevId: 274778232
2019-10-15 23:07:45 +01:00
andrewlewis
14027bc98e Treat AVERROR_INVALIDDATA as non-fatal
Also configure the FFmpeg context to ignore errors as far as possible (this
appears to have an effect only for certain decoders).

Issue: #5293
PiperOrigin-RevId: 227851397
2019-01-08 07:37:30 +00:00
andrewlewis
7b10e637e7 Support mu-law and A-law PCM with ffmpeg
Issue: #4360

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=200186465
2018-06-18 11:12:10 +01:00
andrewlewis
b8aedfbf4f Add support for float output for FfmpegAudioRenderer
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=175940553
2017-11-17 18:53:26 +00:00
andrewlewis
9bbc6d1071 Clean up FFmpeg extension instructions.
Also add instructions for building arm64-v8a and x86.

Issue: #2561

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=152141270
2017-04-06 18:54:17 +01:00
andrewlewis
f7132a7a73 Fix compiler warning about assignment in conditional.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140332890
2016-11-30 21:54:45 +00:00
olly
de67fa5017 Allow replacement of libraries for Opus/Flac/Ffmpeg too
- Also make some of the naming more concise + misc style cleanup.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=132899979
2016-09-13 17:44:10 +01:00
olly
dbb43567a3 Finalize v2 directory + package name
- The package is renamed to avoid conflicts with v1, should any
app wish to include both v1 and v2 for a period of time. This is
similar to the approach used by some other open source projects
(e.g. okhttp).
- Copyright year is updated everywhere for completeness.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=126895326
2016-07-08 12:12:09 +01:00
andrewlewis
da2cfd601d Keep intermediate .so files inside the ffmpeg directory.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=123203428
2016-06-15 19:41:34 +01:00
andrewlewis
ddde6edb92 Add FFmpeg extension.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=122978403
2016-06-15 19:41:33 +01:00