Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FAQ] Change camera video resolution on Android #70

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import com.banuba.sdk.core.VideoResolution
import com.banuba.sdk.core.data.TrackData
import com.banuba.sdk.core.domain.AspectRatioProvider
import com.banuba.sdk.core.domain.DraftConfig
import com.banuba.sdk.core.MediaResolutionProvider
import com.banuba.sdk.core.ext.toPx
import com.banuba.sdk.core.media.MediaFileNameHelper
import com.banuba.sdk.core.ui.ContentFeatureProvider
Expand Down Expand Up @@ -126,9 +127,36 @@ private class SampleIntegrationVeKoinModule {
override fun provide(): AspectRatio = AspectRatio(9.0 / 16)
}
}

single<MediaResolutionProvider> {
CustomMediaResolutionProvider(
hardwareClassProvider = get()
)
}
}
}

class CustomMediaResolutionProvider(
val hardwareClassProvider: HardwareClassProvider
) : MediaResolutionProvider {

private val hardwareClass = hardwareClassProvider.provideHardwareClass()

override fun provideOptimalSlideShowVideoSize() = hardwareClass.optimalResolution

override fun provideOptimalTrimmerVideoSize() = hardwareClass.optimalResolution

override fun provideOptimalEditorVideoSize() = hardwareClass.optimalResolution

// Setting exact resolution to camera
// Please keep in mind
// 1. Front/Back camera has different capabilities. For example, UHD might be available on Back, and not on Front
// 2. Very high resolution affects performance especially when using Face AR on low level devices.
override fun provideOptimalCameraPreviewSize() = VideoResolution.Exact.UHD

override fun provideMaxFastTrimmerVideoSize() = hardwareClass.optimalResolution
}

private class CustomExportParamsProvider(
private val exportDir: Uri,
private val videoResolution: VideoResolution,
Expand Down