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

fixes and updates #96

Merged
merged 4 commits into from
Jan 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/java/com/zoffcc/applications/trifa/TRIFAGlobals.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,12 @@ public class TRIFAGlobals
final static int HIGHER_GLOBAL_VIDEO_BITRATE = 3500;
public final static int NORMAL_GLOBAL_VIDEO_BITRATE = 1500;
public final static int SUPERHIGH_GLOBAL_VIDEO_BITRATE = 8000;
public final static int MEDIUM_GLOBAL_VIDEO_BITRATE = 700;
public final static int LOWER_GLOBAL_VIDEO_BITRATE = 350;
public final static int ABSOLUTE_MINIMUM_GLOBAL_VIDEO_BITRATE = 95;

public final static int NORMAL_GLOBAL_INCOMING_AV_BUFFER_MS = 0;
public final static int HIGH_GLOBAL_INCOMING_AV_BUFFER_MS = 700;

final static int HIGHER_GLOBAL_AUDIO_BITRATE = 128;
final static int NORMAL_GLOBAL_AUDIO_BITRATE = 16; // 64;
Expand Down
104 changes: 25 additions & 79 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
Expand All @@ -37,10 +35,8 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.ScaffoldState
import androidx.compose.material.Slider
import androidx.compose.material.Snackbar
import androidx.compose.material.SnackbarDuration
import androidx.compose.material.SnackbarHostState
import androidx.compose.material.SnackbarResult
import androidx.compose.material.Text
import androidx.compose.material.TextField
import androidx.compose.material.TextFieldDefaults
Expand All @@ -51,23 +47,17 @@ import androidx.compose.material.icons.filled.FormatSize
import androidx.compose.material.icons.filled.Fullscreen
import androidx.compose.material.icons.filled.HighQuality
import androidx.compose.material.icons.filled.NoiseAware
import androidx.compose.material.icons.filled.QrCode
import androidx.compose.material.icons.filled.QrCode2
import androidx.compose.material.icons.filled.RawOff
import androidx.compose.material.icons.filled.Refresh
import androidx.compose.material.icons.filled.Send
import androidx.compose.material.icons.filled.SignalCellular4Bar
import androidx.compose.material.icons.filled.Videocam
import androidx.compose.material.rememberScaffoldState
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
Expand All @@ -78,21 +68,14 @@ import androidx.compose.ui.composed
import androidx.compose.ui.draw.drawWithCache
import androidx.compose.ui.draw.scale
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.FocusState
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.PathEffect
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.drawscope.DrawScope
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.graphics.vector.VectorPainter
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
Expand Down Expand Up @@ -133,10 +116,11 @@ import com.zoffcc.applications.trifa.Log
import com.zoffcc.applications.trifa.MainActivity
import com.zoffcc.applications.trifa.MainActivity.Companion.PREF__audio_input_filter
import com.zoffcc.applications.trifa.MainActivity.Companion.PREF__v4l2_capture_force_mjpeg
import com.zoffcc.applications.trifa.MainActivity.Companion.PREF__video_super_hq
import com.zoffcc.applications.trifa.MainActivity.Companion.PREF__video_bitrate_mode
import com.zoffcc.applications.trifa.MainActivity.Companion.accept_incoming_av_call
import com.zoffcc.applications.trifa.MainActivity.Companion.decline_incoming_av_call
import com.zoffcc.applications.trifa.MainActivity.Companion.main_init
import com.zoffcc.applications.trifa.MainActivity.Companion.set_toxav_video_sending_quality
import com.zoffcc.applications.trifa.MainActivity.Companion.tox_friend_by_public_key
import com.zoffcc.applications.trifa.MainActivity.Companion.tox_friend_get_name
import com.zoffcc.applications.trifa.NodeListJS
Expand Down Expand Up @@ -518,8 +502,12 @@ fun App()
maxLines = 1)
}
Column {
Icon(modifier = Modifier.padding(start = 5.dp, end = 5.dp, top = 2.dp).size(19.dp)
.combinedClickable(onClick = {
val aux_icons_start_padding = 9.dp
val aux_icons_end_padding = 9.dp
val aux_icons_top_padding = 3.dp
val aux_icons_size = 24.dp
Icon(modifier = Modifier.padding(start = aux_icons_start_padding, end = aux_icons_end_padding, top = aux_icons_top_padding).size(aux_icons_size).combinedClickable(
onClick = {
if (video_in_box_small)
{
video_in_box_width = VIDEO_IN_BOX_WIDTH_BIG
Expand All @@ -539,7 +527,7 @@ fun App()
contentDescription = "toggle large incoming video size"
)
var audio_filter_current_value by remember { mutableStateOf(PREF__audio_input_filter) }
Icon(modifier = Modifier.padding(start = 5.dp, end = 5.dp, top = 2.dp).size(19.dp).combinedClickable(
Icon(modifier = Modifier.padding(start = aux_icons_start_padding, end = aux_icons_end_padding, top = aux_icons_top_padding).size(aux_icons_size).combinedClickable(
onClick = {
if (PREF__audio_input_filter == 0)
{
Expand All @@ -555,7 +543,7 @@ fun App()
contentDescription = "enable Noise Suppresion on audio capture",
tint = if (audio_filter_current_value == 1) Color.Red else Color.DarkGray)
var video_force_mjpeg_value by remember { mutableStateOf(PREF__v4l2_capture_force_mjpeg) }
Icon(modifier = Modifier.padding(start = 5.dp, end = 5.dp, top = 2.dp).size(19.dp).combinedClickable(
Icon(modifier = Modifier.padding(start = aux_icons_start_padding, end = aux_icons_end_padding, top = aux_icons_top_padding).size(aux_icons_size).combinedClickable(
onClick = {
if (PREF__v4l2_capture_force_mjpeg == 0)
{
Expand All @@ -570,82 +558,40 @@ fun App()
contentDescription = "force MJPEG on video capture",
tint = if (video_force_mjpeg_value == 1) Color.Red else Color.DarkGray)

var video_low_bitrate by remember { mutableStateOf(false) }
Icon(modifier = Modifier.padding(start = 5.dp, end = 5.dp, top = 2.dp).size(19.dp).combinedClickable(
var video_bitrate_mode_value by remember { mutableStateOf(PREF__video_bitrate_mode) }
Icon(modifier = Modifier.padding(start = aux_icons_start_padding, end = aux_icons_end_padding, top = aux_icons_top_padding).size(aux_icons_size).combinedClickable(
onClick = {
try
if (PREF__video_bitrate_mode == 0)
{
if (!savepathstore.isEnabled())
{
val friendnum = tox_friend_by_public_key(avstatestore.state.call_with_friend_pubkey_get())
if (avstatestore.state.call_with_friend_pubkey_get() != null)
{
video_low_bitrate = !video_low_bitrate
if (video_low_bitrate)
{
MainActivity.toxav_option_set(friendnum,
ToxVars.TOXAV_OPTIONS_OPTION.TOXAV_ENCODER_VIDEO_MAX_BITRATE.value.toLong(),
TRIFAGlobals.LOWER_GLOBAL_VIDEO_BITRATE.toLong())
} else
{
MainActivity.toxav_option_set(friendnum,
ToxVars.TOXAV_OPTIONS_OPTION.TOXAV_ENCODER_VIDEO_MAX_BITRATE.value.toLong(),
TRIFAGlobals.NORMAL_GLOBAL_VIDEO_BITRATE.toLong())
}
}
}
PREF__video_bitrate_mode = 1
}
catch (_: java.lang.Exception)
else if (PREF__video_bitrate_mode == 1)
{
PREF__video_bitrate_mode = 2
}
}),
imageVector = Icons.Default.SignalCellular4Bar,
contentDescription = "force lower video bitrate",
tint = if (video_low_bitrate) Color.Red else Color.DarkGray)

var video_super_hq_value by remember { mutableStateOf(PREF__video_super_hq) }
Icon(modifier = Modifier.padding(start = 5.dp, end = 5.dp, top = 2.dp).size(19.dp).combinedClickable(
onClick = {
if (PREF__video_super_hq == 0)
{
PREF__video_super_hq = 1
} else
else // PREF__video_bitrate_mode == 2
{
PREF__video_super_hq = 0
PREF__video_bitrate_mode = 0
}
video_super_hq_value = PREF__video_super_hq
video_bitrate_mode_value = PREF__video_bitrate_mode

try
{
if (!savepathstore.isEnabled())
{
val friendnum = tox_friend_by_public_key(avstatestore.state.call_with_friend_pubkey_get())
if (PREF__video_super_hq == 1)
{
MainActivity.toxav_option_set(friendnum,
ToxVars.TOXAV_OPTIONS_OPTION.TOXAV_ENCODER_VIDEO_MIN_BITRATE.value.toLong(),
TRIFAGlobals.SUPERHIGH_GLOBAL_VIDEO_BITRATE.toLong())
MainActivity.toxav_option_set(friendnum,
ToxVars.TOXAV_OPTIONS_OPTION.TOXAV_ENCODER_VIDEO_MAX_BITRATE.value.toLong(),
TRIFAGlobals.SUPERHIGH_GLOBAL_VIDEO_BITRATE.toLong())
} else
{
MainActivity.toxav_option_set(friendnum,
ToxVars.TOXAV_OPTIONS_OPTION.TOXAV_ENCODER_VIDEO_MIN_BITRATE.value.toLong(),
90)
MainActivity.toxav_option_set(friendnum,
ToxVars.TOXAV_OPTIONS_OPTION.TOXAV_ENCODER_VIDEO_MAX_BITRATE.value.toLong(),
TRIFAGlobals.GLOBAL_VIDEO_BITRATE.toLong())
}
set_toxav_video_sending_quality(PREF__video_bitrate_mode)
}
}
catch (_: java.lang.Exception)
{
}
}),
imageVector = Icons.Default.HighQuality,
contentDescription = "force super HQ on video capture",
tint = if (video_super_hq_value == 1) Color.Red else Color.DarkGray)
contentDescription = "toggle video capture quality",
tint =
if (video_bitrate_mode_value == 0) Color.DarkGray
else if (video_bitrate_mode_value == 1) Color.Green
else Color.Red)


val current_callstate3 by avstatestorecallstate.stateFlow.collectAsState()
Expand Down
Loading
Loading