diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a61eb541..5744e083 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -9,9 +9,6 @@ jobs:
ANDROID_BASE_CHECKS:
name: Base Checks
runs-on: ubuntu-latest
- env:
- SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
- SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
@@ -20,14 +17,10 @@ jobs:
distribution: temurin
cache: gradle
- name: Perform base checks
- run: ./gradlew demo:assembleDebug lib:deployLocal
+ run: ./gradlew demo:assembleDebug lib:deployLocal --stacktrace
ANDROID_EMULATOR_TESTS:
name: Emulator Tests
runs-on: ubuntu-latest
- # Temporary workaround for deployer issue
- env:
- SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
- SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
strategy:
fail-fast: false
matrix:
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index e7fcc894..812d3844 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -22,6 +22,6 @@ jobs:
distribution: temurin
cache: gradle
- name: Publish to Maven Central
- run: ./gradlew deployNexus
+ run: ./gradlew deployNexus --stacktrace
- name: Publish to GitHub Packages
- run: ./gradlew deployGithub
+ run: ./gradlew deployGithub --stacktrace
diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml
index 370794bf..e1914ec5 100644
--- a/.github/workflows/snapshot.yml
+++ b/.github/workflows/snapshot.yml
@@ -24,4 +24,4 @@ jobs:
distribution: temurin
cache: gradle
- name: Publish nexus snapshot
- run: ./gradlew deployNexusSnapshot
\ No newline at end of file
+ run: ./gradlew deployNexusSnapshot --stacktrace
\ No newline at end of file
diff --git a/README.md b/README.md
index a44321ad..d6580bbb 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ Android codecs available on the device. Works on API 21+.
```kotlin
// build.gradle.kts
dependencies {
- implementation("com.otaliastudios:transcoder:0.10.5")
+ implementation("com.otaliastudios:transcoder:0.11.0")
}
```
diff --git a/build.gradle.kts b/build.gradle.kts
index 1e81addf..5816c9a9 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,4 +2,5 @@ plugins {
kotlin("android") version "2.0.0" apply false
id("com.android.library") version "8.2.2" apply false
id("com.android.application") version "8.2.2" apply false
+ id("io.deepmedia.tools.deployer") version "0.14.0" apply false
}
\ No newline at end of file
diff --git a/docs-legacy/.gitignore b/docs-legacy/.gitignore
deleted file mode 100644
index 928a70a0..00000000
--- a/docs-legacy/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-_site
-_pages
-*.sw?
-.sass-cache
-.jekyll-metadata
-Gemfile.lock
diff --git a/docs-legacy/Gemfile b/docs-legacy/Gemfile
deleted file mode 100644
index 37f5eaa4..00000000
--- a/docs-legacy/Gemfile
+++ /dev/null
@@ -1,2 +0,0 @@
-source 'https://rubygems.org'
-gem 'github-pages', group: :jekyll_plugins
diff --git a/docs-legacy/README.md b/docs-legacy/README.md
deleted file mode 100644
index 995fe576..00000000
--- a/docs-legacy/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Read the docs at https://opensource.deepmedia.io/transcoder.
diff --git a/docs-legacy/_about/changelog.md b/docs-legacy/_about/changelog.md
deleted file mode 100644
index 575f5a04..00000000
--- a/docs-legacy/_about/changelog.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/changelog
-title: "Changelog"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/changelog
\ No newline at end of file
diff --git a/docs-legacy/_about/getting-started.md b/docs-legacy/_about/getting-started.md
deleted file mode 100644
index 35eda638..00000000
--- a/docs-legacy/_about/getting-started.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/install
-title: "Getting Started"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/install
diff --git a/docs-legacy/_about/install.md b/docs-legacy/_about/install.md
deleted file mode 100644
index 7f4cdead..00000000
--- a/docs-legacy/_about/install.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/install
-title: "Install"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/install
diff --git a/docs-legacy/_config.yml b/docs-legacy/_config.yml
deleted file mode 100644
index b5950cf3..00000000
--- a/docs-legacy/_config.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-# Glide: https://github.com/bumptech/glide/blob/gh-pages/_config.yml
-# Source repo: https://github.com/bruth/jekyll-docs-template
-# Source site: http://bruth.github.io/jekyll-docs-template/
-# Ref guide: https://visualstudiomagazine.com/Articles/2015/03/01/GitHub-Pages.aspx?Page=2
-
-# Used by us
-title: Transcoder
-color: '#f8f8f8'
-description: A well documented Android library providing hardware-accelerated video transcoding, using MediaCodec APIs instead of native code (no FFMPEG patent issues). Supports cropping to any dimension, concatenation, clipping, audio processing, video speed and much more. # used by ourselves and by seo tag.
-disqus_shortname: 'natario1-transcoder'
-google_site_verification: '4x49i17ABIrSvUl52SeL0-t0341aTnWWaC62-FYCRT4'
-github: [metadata] # TODO What's this?
-github_repo: Transcoder
-github_version: 0.10.5
-github_branch: main
-baseurl: '/Transcoder' # Keep as an empty string if served up at the root
-collections:
- about:
- name: Overview
- output: true
- docs:
- name: Documentation
- output: true
- extra:
- name: More
- output: true
-screenshots:
- - 'screenshot-1.png'
- - 'screenshot-2.png'
-
-# Jekyll specific stuff
-author:
- name: Mattia Iavarone # Should appear in
.
- email: mat.iavarone@gmail.com
- github: natario1
- website: https://natario.dev
-plugins:
- - jekyll-seo-tag # Add SEO tags
-permalink: /:categories/:title # Ensure permalinks have no date nor extension
-exclude: ['script', 'README.md'] # Exclude non-site files
-highlighter: rouge # Syntax highlighting
-markdown: kramdown # Use the kramdown Markdown renderer
-kramdown:
- input: GFM # Use Github Flavored Markdown
\ No newline at end of file
diff --git a/docs-legacy/_docs/advanced-options.md b/docs-legacy/_docs/advanced-options.md
deleted file mode 100644
index 8cb956b5..00000000
--- a/docs-legacy/_docs/advanced-options.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/advanced-options
-title: "Advanced Options"
-order: 7
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/advanced-options
diff --git a/docs-legacy/_docs/clipping.md b/docs-legacy/_docs/clipping.md
deleted file mode 100644
index 5eb543ba..00000000
--- a/docs-legacy/_docs/clipping.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/clipping
-title: "Clipping and trimming"
-order: 2
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/clipping
-
diff --git a/docs-legacy/_docs/concatenation.md b/docs-legacy/_docs/concatenation.md
deleted file mode 100644
index f09a789c..00000000
--- a/docs-legacy/_docs/concatenation.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/concatenation
-title: "Concatenation"
-order: 3
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/concatenation
diff --git a/docs-legacy/_docs/data-sources.md b/docs-legacy/_docs/data-sources.md
deleted file mode 100644
index 274eb541..00000000
--- a/docs-legacy/_docs/data-sources.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/data-sources
-title: "Data Sources"
-order: 1
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/data-sources
-
diff --git a/docs-legacy/_docs/events.md b/docs-legacy/_docs/events.md
deleted file mode 100644
index 80e0c86f..00000000
--- a/docs-legacy/_docs/events.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/events
-title: "Transcoding Events"
-order: 4
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/events
-
diff --git a/docs-legacy/_docs/track-strategies.md b/docs-legacy/_docs/track-strategies.md
deleted file mode 100644
index 385de184..00000000
--- a/docs-legacy/_docs/track-strategies.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/track-strategies
-title: "Track Strategies"
-order: 6
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/track-strategies
diff --git a/docs-legacy/_docs/validators.md b/docs-legacy/_docs/validators.md
deleted file mode 100644
index 1228ce17..00000000
--- a/docs-legacy/_docs/validators.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder/validators
-title: "Validators"
-order: 5
----
-
-Migrated to https://opensource.deepmedia.io/transcoder/validators
-
diff --git a/docs-legacy/_extra/contact.md b/docs-legacy/_extra/contact.md
deleted file mode 100644
index 683854eb..00000000
--- a/docs-legacy/_extra/contact.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder
-title: "Contact"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder
diff --git a/docs-legacy/_extra/contributing.md b/docs-legacy/_extra/contributing.md
deleted file mode 100644
index c4c64357..00000000
--- a/docs-legacy/_extra/contributing.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder
-title: "Contributing & License"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder
diff --git a/docs-legacy/_extra/donate.md b/docs-legacy/_extra/donate.md
deleted file mode 100644
index dbc95dfd..00000000
--- a/docs-legacy/_extra/donate.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder
-title: "Donate"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder
diff --git a/docs-legacy/_includes/disqus.html b/docs-legacy/_includes/disqus.html
deleted file mode 100644
index b561eef0..00000000
--- a/docs-legacy/_includes/disqus.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
diff --git a/docs-legacy/_includes/footer.html b/docs-legacy/_includes/footer.html
deleted file mode 100644
index be732e0b..00000000
--- a/docs-legacy/_includes/footer.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/docs-legacy/_includes/google_analytics.html b/docs-legacy/_includes/google_analytics.html
deleted file mode 100644
index 174548d1..00000000
--- a/docs-legacy/_includes/google_analytics.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
diff --git a/docs-legacy/_includes/head.html b/docs-legacy/_includes/head.html
deleted file mode 100644
index d3f33018..00000000
--- a/docs-legacy/_includes/head.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% seo %}
-
-{% if site.google_analytics_id != "" %}
-{% include google_analytics.html %}
-{% endif %}
\ No newline at end of file
diff --git a/docs-legacy/_includes/header.html b/docs-legacy/_includes/header.html
deleted file mode 100644
index 7e135e05..00000000
--- a/docs-legacy/_includes/header.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- {{ site.title }}
-
-
-
-
-
-
-
-
-
latest: v{{ site.github_version }}
-
-
-
-
-
diff --git a/docs-legacy/_includes/navigation.html b/docs-legacy/_includes/navigation.html
deleted file mode 100644
index 366fa27e..00000000
--- a/docs-legacy/_includes/navigation.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
- - Home
- {% for collection in site.collections %}
- {% if collection.label != "posts" %}
- {{ collection.name }}
-
- {% assign docs = (collection.docs | sort: "order") %}
- {% for doc in docs %}
- -
- {{ doc.title }}
-
- {% endfor %}
-
-
- {% endif %}
- {% endfor %}
-
-
diff --git a/docs-legacy/_layouts/landing.html b/docs-legacy/_layouts/landing.html
deleted file mode 100644
index 130ce1fa..00000000
--- a/docs-legacy/_layouts/landing.html
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- {% include head.html %}
- {{ site.title }}
-
-
-
-
-
-
-
-
{{ site.title }}
- {{ content }}
-
-
-
-
- {% assign col = 12 | divided_by: site.screenshots.size %}
- {% for screenshot in site.screenshots %}
-
-
-
- {% endfor %}
-
-
-
-
diff --git a/docs-legacy/_layouts/main.html b/docs-legacy/_layouts/main.html
deleted file mode 100644
index 6f0bab15..00000000
--- a/docs-legacy/_layouts/main.html
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
- {% include head.html %}
- {{ site.title }}{% if page.title %} | {{ page.title }}{% endif %}
-
-
-
-
- {% include header.html %}
-
-
-
- {% include navigation.html %}
-
-
-
- {{ content }}
-
- {% if page.disqus == 1 %}
-
- {% include disqus.html %}
-
- {% endif %}
-
-
-
-
-
-
-
- {% include footer.html %}
-
-
-
-
-
diff --git a/docs-legacy/_layouts/page.html b/docs-legacy/_layouts/page.html
deleted file mode 100644
index e7005d0a..00000000
--- a/docs-legacy/_layouts/page.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: main
----
-
-
-
- {{ content }}
-
-
\ No newline at end of file
diff --git a/docs-legacy/_layouts/redirect.html b/docs-legacy/_layouts/redirect.html
deleted file mode 100644
index f057557a..00000000
--- a/docs-legacy/_layouts/redirect.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Redirecting…
-
-
-
-
-
-
-Redirecting…
-Click here if you are not redirected.
-
-
\ No newline at end of file
diff --git a/docs-legacy/css/colors.css b/docs-legacy/css/colors.css
deleted file mode 100644
index 4bef97de..00000000
--- a/docs-legacy/css/colors.css
+++ /dev/null
@@ -1,65 +0,0 @@
-:root {
- --color-primary: #204853;
- --color-primary-active: #102833;
- --color-primary-hover: #103843;
- --color-secondary: #030607;
- --color-accent: #0e95e3;
- --color-accent-light: #f5fcff;
- --color-accent-dark: #0e3375;
- --color-background: #FFFFFF;
- --color-code: var(--color-primary);
- --color-code-background: #f8f8f8;
- --color-text-muted: #6c757d;
-}
-
-body {
- background-color: var(--color-background);
-}
-
-a {
- color: var(--color-primary);
-}
-
-code, pre {
- background-color: var(--color-code-background);
-}
-
-:not(pre) > code {
- color: var(--color-code);
-}
-
-a:hover {
- color: var(--color-primary-hover) !important;
-}
-
-.btn-primary {
- background-color: var(--color-primary) !important;
- border-color: var(--color-primary) !important;
- color: white !important;
-}
-
-.btn-primary.active, .btn-primary:active {
- background-color: var(--color-primary-active) !important;
- border-color: var(--color-primary-active) !important;
-}
-
-.btn-primary:hover {
- background-color: var(--color-primary-hover) !important;
- border-color: var(--color-primary-hover) !important;
- color: white !important;
-}
-
-.btn-outline-primary {
- border-color: var(--color-primary) !important;
-}
-
-.btn-outline-primary.active, .btn-outline-primary:active {
- background-color: var(--color-primary-active) !important;
- border-color: var(--color-primary-active) !important;
-}
-
-.btn-outline-primary:hover {
- border-color: var(--color-primary-hover) !important;
- background-color: var(--color-primary-hover) !important;
- color: white !important;
-}
diff --git a/docs-legacy/css/fonts.css b/docs-legacy/css/fonts.css
deleted file mode 100644
index 8dd13ccb..00000000
--- a/docs-legacy/css/fonts.css
+++ /dev/null
@@ -1,33 +0,0 @@
-@import url('https://fonts.googleapis.com/css?family=Lobster+Two:400i,700i|Roboto+Mono|Source+Sans+Pro:400,700&display=swap');
-@import "fonts_responsive.css";
-
-:root {
- --font-mono: 'Roboto Mono';
- --font-sans: 'Source Sans Pro';
- --font-display: 'Lobster Two';
-}
-
-* {
- font-family: var(--font-sans), sans-serif;
- font-weight: 400;
-}
-
-h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6 {
- font-family: var(--font-display), cursive;
- font-style: italic;
- font-weight: 700 !important;
-}
-
-h4, .h4, h5, .h5, h6, .h6 {
- font-weight: 400;
-}
-
-button, .btn {
- font-family: var(--font-display), cursive !important;
- font-style: italic !important;
- font-weight: 700 !important;
-}
-
-code, code * {
- font-family: var(--font-mono) !important;
-}
\ No newline at end of file
diff --git a/docs-legacy/css/fonts_responsive.css b/docs-legacy/css/fonts_responsive.css
deleted file mode 100644
index 62ecacb3..00000000
--- a/docs-legacy/css/fonts_responsive.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/* https://christianoliff.com/blog/bootstrap-with-rfs */
-/* either apply after everything else or add !important here */
-@media (max-width: 1200px) {
- legend {
- font-size: calc(1.275rem + 0.3vw);
- }
- h1, .h1 {
- font-size: calc(1.375rem + 1.5vw);
- }
- h2, .h2 {
- font-size: calc(1.325rem + 0.9vw);
- }
- h3, .h3 {
- font-size: calc(1.3rem + 0.6vw);
- }
- h4, .h4 {
- font-size: calc(1.275rem + 0.3vw);
- }
- .display-1 {
- font-size: calc(1.725rem + 5.7vw);
- }
- .display-2 {
- font-size: calc(1.675rem + 5.1vw);
- }
- .display-3 {
- font-size: calc(1.575rem + 3.9vw);
- }
- .display-4 {
- font-size: calc(1.475rem + 2.7vw);
- }
- .close {
- font-size: calc(1.275rem + 0.3vw);
- }
-}
diff --git a/docs-legacy/css/landing.css b/docs-legacy/css/landing.css
deleted file mode 100644
index e3da9c69..00000000
--- a/docs-legacy/css/landing.css
+++ /dev/null
@@ -1,43 +0,0 @@
-@import "fonts.css";
-@import "colors.css";
-
-:root {
- --color-gradient-1: var(--color-secondary);
- --color-gradient-2: var(--color-primary);
-}
-
-html {
- width: 100%;
- height: 100%;
- margin: 0;
-}
-
-body {
- background: linear-gradient(45deg, var(--color-gradient-1), var(--color-gradient-2)) fixed !important;
-}
-
-#logo {
- width: 45%;
- max-width: 340px;
-}
-
-h1 {
- color: white;
-}
-
-p {
- color: rgba(255, 255, 255, 0.7);
- font-size: 1.2em;
- line-height: 100%;
-}
-
-.btn {
- color: white !important;
- background-color: rgba(240, 240, 240, 0.25);
- font-size: 1.3em;
-}
-
-.btn:hover {
- color: white !important;
- background-color: rgba(240, 240, 240, 0.4);
-}
\ No newline at end of file
diff --git a/docs-legacy/css/main.css b/docs-legacy/css/main.css
deleted file mode 100644
index 6aed50ba..00000000
--- a/docs-legacy/css/main.css
+++ /dev/null
@@ -1,291 +0,0 @@
-@import "fonts.css";
-@import "colors.css";
-@import "syntax.css";
-
-:root {
- --color-footer: var(--color-code-background);
- --color-table-head: var(--color-code-background);
- --color-divider: rgba(230, 230, 230, 0.7);
- --header-height: 65px; /* kind of */
- --cards-radius: 4px;
-}
-
-html, body {
- height: 100%;
-}
-
-/* dividers */
-
-.has-divider {
- border-color: var(--color-divider) !important;
-}
-
-/* header */
-
-header {
- background: linear-gradient(45deg, var(--color-secondary), var(--color-primary)) fixed;
- position: fixed;
- top: 0;
- width: 100%;
- z-index: 10;
-}
-
-header .left {
- position: absolute;
- left: 0;
- top: 50%;
- transform: translateY(-50%);
-}
-
-header .right {
- position: absolute;
- right: 0;
- top: 50%;
- transform: translateY(-50%);
-}
-
-header a {
- color: white !important;
-}
-
-header a:hover {
- color: white !important;
-}
-
-header .logo {
- height: 32px;
- width: auto;
-}
-
-header .version {
- font-size: 0.9em;
- color: rgba(255, 255, 255, 0.8);
-}
-
-body {
- /* to offset wrt sticky header */
- padding-top: var(--header-height);
-}
-
-/* footer */
-
-footer {
- background-color: var(--color-footer);
- color: var(--color-text-muted);
- font-size: 0.9em;
-}
-
-/* drawer */
-
-@media (hover: hover) {
- .drawer-toggle:hover {
- background-color: rgba(240, 240, 240, 0.15);
- border-radius: 50%;
- }
-}
-
-@media (max-width: 768px) {
- .drawer {
- position: fixed;
- top: 0;
- left: 0;
- width: 300px;
- height: 100%;
- overflow-x: hidden;
- overflow-y: auto;
- background-color: var(--color-background);
- transition: transform 0.4s cubic-bezier(0.4, 0, 0, 1);
- z-index: 5;
- padding-top: var(--header-height);
- }
-
- .drawer-closed {
- transform: translateX(-100%);
- }
-}
-
-@media (max-width: 480px) {
- .drawer {
- width: 100%;
- }
-}
-
-.drawer ul {
- list-style: none;
- margin: 0;
- padding: 0;
- line-height: 100%;
-}
-
-.drawer a {
- color: inherit;
-}
-
-.drawer a:hover {
- color: var(--color-primary-hover) !important;
-}
-
-.drawer li.active a {
- color: var(--color-primary);
- position: relative;
-}
-
-/* .drawer li.active a:hover {
- color: var(--color-primary-active) !important;
- text-decoration: none;
-} */
-
-.drawer li.active {
- position: relative;
-}
-
-.drawer li.active::after {
- content: '';
- display: inline-block;
- position: absolute;
- right: 0;
- top: 50%;
- transform: translateY(-50%);
- width: 8px;
- height: 8px;
- background-color: var(--color-primary);
- border-radius: 50%;
-}
-
-/* tables */
-
-table {
- /* same margins that reboot gives to pre */
- margin-top: 0;
- margin-bottom: 1rem;
- border-collapse: collapse;
- /* make it scrollable if needed */
- display: block;
- overflow-x: auto;
-}
-
-thead {
- background-color: var(--color-table-head);
-}
-
-th {
- padding: 8px;
- border: 1px solid var(--color-divider);
- font-family: var(--font-display), sans-serif;
- font-weight: 700;
-}
-
-td {
- padding: 8px;
- border: 1px solid var(--color-divider);
-}
-
-/* page and content */
-
-.content p {
- overflow-x: auto; /* for changelog compare links */
-}
-
-.content a, footer a {
- color: var(--color-accent);
-}
-
-.content a:hover, footer a:hover {
- color: var(--color-accent) !important;
-}
-
-.content ul {
- padding-left: 24px;
-}
-
-.content blockquote {
- background-color: var(--color-code-background);
- border-radius: var(--cards-radius);
- border-left: 4px;
- border-left-style: solid;
- border-left-color: var(--color-accent);
- font-size: 0.9em;
- color: var(--color-text-muted);
- padding: 0.8rem;
- /* text-align: justify;
- position: relative;
- padding: 0.5rem 32px 0.5rem 0.5rem;
- text-justify: inter-word; */
-}
-
-/* .content blockquote::after {
- content: '!';
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
- right: 16px;
- font-size: 1rem !important;
- font-weight: 700 !important;
- color: var(--color-accent);
-} */
-
-.content blockquote p, .content blockquote ul {
- margin: 0;
-}
-
-.content h1, .content h2, .content h3, .content h4, .content h5, .content h6 {
- margin-top: 1.4rem;
- margin-bottom: 0.8rem;
-}
-
-.page-header span {
- font-size: 0.9em;
- color: var(--color-text-muted);
-}
-
-.page-footer a {
- color: black;
- font-family: var(--font-display), cursive;
- font-weight: 700;
- font-size: 1.2em;
-}
-
-/* code */
-
-pre {
- border-radius: var(--cards-radius);
- padding: 0.8rem;
- font-size: 0.8rem !important;
- line-height: 1.6;
-}
-
-:not(pre) > code {
- border-radius: var(--cards-radius);
- padding: 2px;
- font-weight: 700 !important;
- font-size: 0.8rem !important;
-}
-
-.language-java, .language-xml, .language-kotlin, .language-groovy {
- position: relative;
-}
-
-.language-java::after, .language-xml::after, .language-kotlin::after, .language-groovy::after {
- position: absolute;
- top: 0;
- right: 0;
- padding: 6px;
- font-size: 0.65rem;
- color: var(--color-text-muted);
-}
-
-.language-java::after {
- content: 'java';
-}
-
-.language-xml::after {
- content: 'xml';
-}
-
-.language-groovy::after {
- content: 'groovy';
-}
-
-.language-kotlin::after {
- content: 'kotlin';
-}
diff --git a/docs-legacy/css/syntax.css b/docs-legacy/css/syntax.css
deleted file mode 100644
index e41961f4..00000000
--- a/docs-legacy/css/syntax.css
+++ /dev/null
@@ -1,86 +0,0 @@
-/* https://github.com/richleland/pygments-css/ */
-@import "colors.css";
-:root {
- --syntax-muted: #999999;
- --syntax-annotations: #a49848;
- --syntax-keyword: #007020;
- --syntax-operators: #606060;
- --syntax-numbers: var(--syntax-keyword);
- --syntax-xml-tags: var(--syntax-keyword);
-}
-
-.highlight .c { color: var(--syntax-muted); font-style: italic } /* Comment */
-.highlight .ch { color: var(--syntax-muted); font-style: italic } /* Comment.Hashbang */
-.highlight .cm { color: var(--syntax-muted); font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: var(--syntax-muted); } /* Comment.Preproc */
-.highlight .cpf { color: var(--syntax-muted); font-style: italic } /* Comment.PreprocFile */
-.highlight .c1 { color: var(--syntax-muted); font-style: italic } /* Comment.Single */
-.highlight .cs { color: var(--syntax-muted); background-color: #fff0f0 } /* Comment.Special */
-
-.highlight .nt { color: var(--syntax-xml-tags); font-weight: bold } /* Name.Tag */
-.highlight .na { color: inherit; /* var(--color-accent) */ } /* Name.Attribute */
-.highlight .nf { color: inherit; /* var(--color-accent) */ } /* Name.Function */
-
-.highlight .mb { color: var(--syntax-numbers) } /* Literal.Number.Bin */
-.highlight .mf { color: var(--syntax-numbers) } /* Literal.Number.Float */
-.highlight .mh { color: var(--syntax-numbers) } /* Literal.Number.Hex */
-.highlight .mi { color: var(--syntax-numbers) } /* Literal.Number.Integer */
-.highlight .mo { color: var(--syntax-numbers) } /* Literal.Number.Oct */
-
-.highlight .nd { color: var(--syntax-annotations); } /* Name.Decorator */
-
-.highlight .k { color: var(--syntax-keyword); font-weight: bold } /* Keyword */
-.highlight .kd { color: var(--syntax-keyword); font-weight: bold } /* Keyword.Declaration */
-.highlight .kt { color: var(--syntax-keyword); font-weight: bold } /* Keyword.Type */
-.highlight .kc { color: var(--syntax-keyword); font-weight: bold } /* Keyword.Constant */
-.highlight .kn { color: var(--syntax-keyword); font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: var(--syntax-keyword); font-weight: bold } /* Keyword.Pseudo */
-.highlight .kr { color: var(--syntax-keyword); font-weight: bold } /* Keyword.Reserved */
-
-.highlight .s { color: var(--color-accent-dark); background-color: var(--color-accent-light); } /* Literal.String */
-.highlight .s1 { color: var(--color-accent-dark); background-color: var(--color-accent-light); } /* Literal.String.Single */
-.highlight .sa { color: var(--color-accent-dark) } /* Literal.String.Affix */
-.highlight .sb { color: var(--color-accent-dark) } /* Literal.String.Backtick */
-.highlight .sc { color: var(--color-accent-dark) } /* Literal.String.Char */
-.highlight .dl { color: var(--color-accent-dark) } /* Literal.String.Delimiter */
-.highlight .sd { color: var(--color-accent-dark); font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: var(--color-accent-dark) } /* Literal.String.Double */
-.highlight .se { color: var(--color-accent-dark); font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: var(--color-accent-dark) } /* Literal.String.Heredoc */
-.highlight .si { color: var(--color-accent-dark); font-style: italic } /* Literal.String.Interpol */
-.highlight .sx { color: var(--color-accent-dark) } /* Literal.String.Other */
-.highlight .sr { color: var(--color-accent-dark) } /* Literal.String.Regex */
-.highlight .ss { color: var(--color-accent-dark) } /* Literal.String.Symbol */
-
-.highlight .o { color: var(--syntax-operators) } /* Operator */
-
-.highlight .hll { background-color: #ffffcc }
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .m { color: #40a070 } /* Literal.Number */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.highlight .no { color: #60add5 } /* Name.Constant */
-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #007020 } /* Name.Exception */
-.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nv { color: #bb60d5 } /* Name.Variable */
-.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #06287e } /* Name.Function.Magic */
-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
-.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/docs-legacy/home.md b/docs-legacy/home.md
deleted file mode 100644
index 7ddf3f2c..00000000
--- a/docs-legacy/home.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder
-title: "Transcoder"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder
\ No newline at end of file
diff --git a/docs-legacy/icons/github.svg b/docs-legacy/icons/github.svg
deleted file mode 100644
index c8a122a7..00000000
--- a/docs-legacy/icons/github.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
\ No newline at end of file
diff --git a/docs-legacy/icons/menu.svg b/docs-legacy/icons/menu.svg
deleted file mode 100644
index 45918677..00000000
--- a/docs-legacy/icons/menu.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/docs-legacy/index.md b/docs-legacy/index.md
deleted file mode 100644
index ee7fbb4e..00000000
--- a/docs-legacy/index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: redirect
-redirect_to: https://opensource.deepmedia.io/transcoder
-title: "Transcoder"
----
-
-Migrated to https://opensource.deepmedia.io/transcoder
diff --git a/docs-legacy/script/launch b/docs-legacy/script/launch
deleted file mode 100755
index 080bfe6c..00000000
--- a/docs-legacy/script/launch
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-#
-# Run a local instance of the site.
-bundle exec jekyll serve
diff --git a/docs-legacy/static/banner.png b/docs-legacy/static/banner.png
deleted file mode 100644
index 017a4bc1..00000000
Binary files a/docs-legacy/static/banner.png and /dev/null differ
diff --git a/docs-legacy/static/icon_foreground.png b/docs-legacy/static/icon_foreground.png
deleted file mode 100644
index a5b60424..00000000
Binary files a/docs-legacy/static/icon_foreground.png and /dev/null differ
diff --git a/docs-legacy/static/screenshot-1.png b/docs-legacy/static/screenshot-1.png
deleted file mode 100644
index fd47e91f..00000000
Binary files a/docs-legacy/static/screenshot-1.png and /dev/null differ
diff --git a/docs-legacy/static/screenshot-2.png b/docs-legacy/static/screenshot-2.png
deleted file mode 100644
index d43c4f47..00000000
Binary files a/docs-legacy/static/screenshot-2.png and /dev/null differ
diff --git a/docs-legacy/static/sharechat.png b/docs-legacy/static/sharechat.png
deleted file mode 100644
index eaf40c5d..00000000
Binary files a/docs-legacy/static/sharechat.png and /dev/null differ
diff --git a/docs/changelog.mdx b/docs/changelog.mdx
index 6b4dc3fe..9fa981c8 100644
--- a/docs/changelog.mdx
+++ b/docs/changelog.mdx
@@ -6,6 +6,25 @@ title: Changelog
New versions are released through GitHub, so the reference page is the [GitHub Releases](https://github.com/deepmedia/Transcoder/releases) page.
+## 0.11.X
+
+### 0.11.0
+
+This release focuses on stability and performance, fixing old bugs that were making the library unstable and unreliable.
+In addition, the library is now available at new maven coordinates `io.deepmedia.community:transcoder-android`.
+The old coordinates will still work and receive updates.
+
+- Enhancement: Revisit transcoding pipeline ([#203](https://github.com/deepmedia/Transcoder/pull/203))
+- Enhancement: Allow SpeedTimeInterpolator reuse, thanks to [@vaibhavpandeyvpz](https://github.com/vaibhavpandeyvpz) ([#199](https://github.com/deepmedia/Transcoder/pull/199))
+- Fix: fix video artifacts, thanks to [@jumperson](https://github.com/jumperson) ([#199](https://github.com/deepmedia/Transcoder/pull/200))
+- Fix: fix end-of-stream flag not sent ([#201](https://github.com/deepmedia/Transcoder/pull/201))
+- Fix: fix performance issues, thanks to [@jumperson](https://github.com/jumperson) ([#202](https://github.com/deepmedia/Transcoder/pull/202))
+- Fix: handle null buffers ([#203](https://github.com/deepmedia/Transcoder/pull/203))
+- Fix: avoid pipeline stalls ([#203](https://github.com/deepmedia/Transcoder/pull/203))
+- Fix: ensure monotonic muxer timestamps ([#203](https://github.com/deepmedia/Transcoder/pull/203))
+
+[Compare 0.10.5...0.11.0](https://github.com/deepmedia/Transcoder/compare/v0.10.5...v0.11.0).
+
## 0.10.X
### 0.10.5
diff --git a/docs/install.mdx b/docs/install.mdx
index 14cbf649..3086658d 100644
--- a/docs/install.mdx
+++ b/docs/install.mdx
@@ -4,13 +4,16 @@ title: Install
# Installation
-Transcoder is publicly hosted on the [Maven Central](https://repo1.maven.org/maven2/com/otaliastudios/)
+Transcoder is publicly hosted on the [Maven Central](https://repo1.maven.org/maven2/io/deepmedia/community/)
repository, where you can download the AAR package. To fetch with Gradle, assuming that `mavenCentral()` is already
one of your repository sources, simply declare a new dependency:
```kotlin
dependencies {
- api("com.otaliastudios:transcoder:LATEST_VERSION")
+ api("io.deepmedia.community:transcoder-android:LATEST_VERSION")
+
+ // Or use the legacy coordinates:
+ // api("com.otaliastudios:transcoder:LATEST_VERSION")
}
```
@@ -32,6 +35,9 @@ pluginManagement {
// build.gradle.kts
dependencies {
- implementation("com.otaliastudios:transcoder:latest-SNAPSHOT")
+ api("io.deepmedia.community:transcoder-android:latest-SNAPSHOT")
+
+ // Or use the legacy coordinates:
+ // api("com.otaliastudios:transcoder:latest-SNAPSHOT")
}
```
\ No newline at end of file
diff --git a/lib-legacy/.gitignore b/lib-legacy/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/lib-legacy/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/lib-legacy/build.gradle.kts b/lib-legacy/build.gradle.kts
new file mode 100644
index 00000000..a62e9b07
--- /dev/null
+++ b/lib-legacy/build.gradle.kts
@@ -0,0 +1,77 @@
+import io.deepmedia.tools.deployer.model.Secret
+
+plugins {
+ id("com.android.library")
+ id("io.deepmedia.tools.deployer")
+}
+
+android {
+ namespace = "com.otaliastudios.transcoder"
+ compileSdk = 34
+ defaultConfig.minSdk = 21
+ publishing { singleVariant("release") }
+}
+
+dependencies {
+ api(project(":lib"))
+}
+
+deployer {
+ content {
+ component {
+ fromSoftwareComponent("release")
+ emptyDocs()
+ emptySources()
+ }
+ }
+
+ projectInfo {
+ groupId = "com.otaliastudios"
+ artifactId = "transcoder"
+ release.version = "0.11.0" // change :lib and README
+ description = "Accelerated video compression and transcoding on Android using MediaCodec APIs (no FFMPEG/LGPL licensing issues). Supports cropping to any dimension, concatenation, audio processing and much more."
+ url = "https://opensource.deepmedia.io/transcoder"
+ scm.fromGithub("deepmedia", "Transcoder")
+ license(apache2)
+ developer("Mattia Iavarone", "mattia@deepmedia.io", "DeepMedia", "https://deepmedia.io")
+ }
+
+ signing {
+ key = secret("SIGNING_KEY")
+ password = secret("SIGNING_PASSWORD")
+ }
+
+ // use "deployLocal" to deploy to local maven repository
+ localSpec {
+ directory.set(rootProject.layout.buildDirectory.get().dir("inspect"))
+ signing {
+ key = absent()
+ password = absent()
+ }
+ }
+
+ // use "deployNexus" to deploy to OSSRH / maven central
+ nexusSpec {
+ auth.user = secret("SONATYPE_USER")
+ auth.password = secret("SONATYPE_PASSWORD")
+ syncToMavenCentral = true
+ }
+
+ // use "deployNexusSnapshot" to deploy to sonatype snapshots repo
+ nexusSpec("snapshot") {
+ auth.user = secret("SONATYPE_USER")
+ auth.password = secret("SONATYPE_PASSWORD")
+ repositoryUrl = ossrhSnapshots1
+ release.version = "latest-SNAPSHOT"
+ }
+
+ // use "deployGithub" to deploy to github packages
+ githubSpec {
+ repository = "Transcoder"
+ owner = "deepmedia"
+ auth {
+ user = secret("GHUB_USER")
+ token = secret("GHUB_PERSONAL_ACCESS_TOKEN")
+ }
+ }
+}
diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts
index 533e7902..74dcfcc8 100644
--- a/lib/build.gradle.kts
+++ b/lib/build.gradle.kts
@@ -1,12 +1,15 @@
+import io.deepmedia.tools.deployer.model.Secret
+import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal
+
plugins {
id("com.android.library")
kotlin("android")
- id("io.deepmedia.tools.deployer") version "0.14.0-alpha1"
+ id("io.deepmedia.tools.deployer")
id("org.jetbrains.dokka") version "1.9.20"
}
android {
- namespace = "com.otaliastudios.transcoder"
+ namespace = "io.deepmedia.transcoder"
compileSdk = 34
defaultConfig {
minSdk = 21
@@ -26,7 +29,7 @@ kotlin {
dependencies {
api("com.otaliastudios.opengl:egloo:0.6.1")
- api("androidx.annotation:annotation:1.8.1")
+ api("androidx.annotation:annotation:1.8.2")
androidTestImplementation("androidx.test:runner:1.6.1")
androidTestImplementation("androidx.test:rules:1.6.1")
@@ -42,9 +45,13 @@ val javadocs = tasks.register("dokkaJavadocJar") {
archiveClassifier.set("javadoc")
}
-deployer {
- verbose = true
+// Ugly workaround because the snapshot publication has different version and maven-publish
+// is then unable to determine the right coordinates for lib-legacy dependency on this project
+publishing.publications.withType().configureEach {
+ isAlias = name != "localReleaseComponent"
+}
+deployer {
content {
component {
fromSoftwareComponent("release")
@@ -54,15 +61,14 @@ deployer {
}
projectInfo {
- groupId = "com.otaliastudios"
- artifactId = "transcoder"
- release.version = "0.10.5"
- release.tag = "v0.10.5"
+ groupId = "io.deepmedia.community"
+ artifactId = "transcoder-android"
+ release.version = "0.11.0" // change :lib-legacy and README
description = "Accelerated video compression and transcoding on Android using MediaCodec APIs (no FFMPEG/LGPL licensing issues). Supports cropping to any dimension, concatenation, audio processing and much more."
- url = "https://github.com/deepmedia/Transcoder"
+ url = "https://opensource.deepmedia.io/transcoder"
scm.fromGithub("deepmedia", "Transcoder")
license(apache2)
- developer("natario1", "mattia@deepmedia.io", "DeepMedia", "https://deepmedia.io")
+ developer("Mattia Iavarone", "mattia@deepmedia.io", "DeepMedia", "https://deepmedia.io")
}
signing {
@@ -73,6 +79,10 @@ deployer {
// use "deployLocal" to deploy to local maven repository
localSpec {
directory.set(rootProject.layout.buildDirectory.get().dir("inspect"))
+ signing {
+ key = absent()
+ password = absent()
+ }
}
// use "deployNexus" to deploy to OSSRH / maven central
diff --git a/settings.gradle.kts b/settings.gradle.kts
index b3b62bfb..4e474bb4 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -15,4 +15,5 @@ dependencyResolutionManagement {
}
include(":lib")
+include(":lib-legacy")
include(":demo")