chatgui-android: видеосообщения — запись, выбор камеры, качество, подсветка
- C-слой: video_sender (content_type video/mp4, media_video=0 без FFmpeg) - chat_msg_submit: duration/width/height для метаданных видео в теле сообщения - JNI: nativeVideoSend + NativeLib/Repository/ViewModel - VideoRecordScreen: CameraX VideoCapture, 4 пресета качества (разрешение+битрейт), выбор камеры (селфи/широкая/обычная/макро/теле по фокусу), тумблер подсветки, запись/пауза/отправить, лимит 60с - InputBar: единая кнопка — короткий тап переключает voice/video, удержание — запись - режим камеры/микрофона сохраняется в ViewModel
This commit is contained in:
1 parent
fe1726ebea
commit
73e81032bc
16 files changed
+788
-33
No files matched your search
@@ -33,6 +33,9 @@ struct chat_msg_submit {
|
||||
char media_dest[1024];
|
||||
uint8_t media_copy;
|
||||
uint8_t media_video; /* 1 = подготовить как видео (пробинг+транскод) */
|
||||
int duration_ms; /* видео: длительность (0 = неизвестно) */
|
||||
int width; /* видео: ширина */
|
||||
int height; /* видео: высота */
|
||||
uint8_t* data;
|
||||
uint32_t data_len;
|
||||
uint64_t timestamp;
|
||||
|
||||
@@ -269,6 +269,9 @@ void chat_core_submit_media_message(struct chat_msg_submit* req) {
|
||||
snprintf(mctx->content_type, sizeof(mctx->content_type), "%s", req->content_type);
|
||||
snprintf(mctx->media_dest, sizeof(mctx->media_dest), "%s", req->media_dest);
|
||||
mctx->timestamp = req->timestamp;
|
||||
mctx->duration_ms = req->duration_ms;
|
||||
mctx->width = req->width;
|
||||
mctx->height = req->height;
|
||||
if (req->data && req->data_len > 0) {
|
||||
mctx->msg_data_len = req->data_len < sizeof(mctx->msg_data) ? req->data_len : sizeof(mctx->msg_data) - 1;
|
||||
memcpy(mctx->msg_data, req->data, mctx->msg_data_len);
|
||||
|
||||
Reference in new issue
Block a user