You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AndroidStudioSettings/ChatGPTConversations_170.xml

6 lines
27 KiB

<application>
<component name="ee.carlrobert.codegpt.state.conversations.ConversationsState">
<option name="currentConversation" value="{&quot;id&quot;:&quot;c6edd6cf-13ca-4b2a-91fe-fd64aa360432&quot;,&quot;title&quot;:null,&quot;messages&quot;:[{&quot;prompt&quot;:&quot;看一下除了skip渲染还有什么可以优化性能的地方吗\n\n```dart:/home/debuggerx/StudioProjects/flutter_ffmpeg_sw_player/lib/src/controller.dart\n_totalBufferedBytes\n```&quot;,&quot;id&quot;:&quot;b5b40eca-7171-498e-85d7-641982c28cea&quot;,&quot;response&quot;:&quot;在 [FfmpegPlayerController](psi_element://lib.src.controller.FfmpegPlayerController) ****** GC ** **FFI **\n\n### \n\n1. ** (Zero-copy )** `Uint8List (FFmpeg stdout)` -&gt; `List&lt;int&gt; (chunkQueue)` -&gt; `Pointer&lt;Uint8&gt; (nativeBuffer)` `Pointer` `List` \n2. **** `while` `setRange` `chunk` CPU \n3. **** `List` (Circular Buffer)\n4. ** FFI **`_nativeBuffer!.asTypedList(_currentBufferSize)` \n\n### \n\n1. ** 1** [FfmpegPlayerController](psi_element://lib.src.controller.FfmpegPlayerController) `asTypedList` \n2. ** 2** `_startRender` 使\n3. ** 3** `_chunkQueue` `removeAt(0)` 线 List `Queue` \n\n### \n\n```dart:lib/src/controller.dart\nimport 'dart:async';\nimport 'dart:ffi';\nimport 'dart:io';\nimport 'dart:typed_data';\n\nimport 'package:ffi/ffi.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_ffmpeg_sw_player/src/ffmpeg_util.dart';\nimport 'package:flutter_ffmpeg_sw_player/src/fps_ticker.dart';\nimport 'package:flutter_ffmpeg_sw_player/src/media_info.dart';\n\nconst cacheFrames = 5;\n\nenum PlayerStatus {\n idle,\n loading,\n playing,\n paused,\n error,\n}\n\nconst liveSchemas = ['rtmp', 'rtmps' 'rtsp', 'rtsps', 'srt'];\n\nclass FfmpegPlayerController {\n bool autoDispose;\n\n FfmpegPlayerController({this.autoDispose = true});\n\n final ValueNotifier&lt;PlayerStatus&gt; status = ValueNotifier(PlayerStatus.idle);\n final FpsTicker _fpsTicker = FpsTicker();\n MediaInfo? _mediaInfo;\n void Function(Pointer&lt;Uint8&gt; frameDataPtr, int width, int height)? _onFrame;\n\n Pointer&lt;Uint8&gt;? _nativeBuffer;\n // 1: TypedList \n Uint8List? _nativeBufferView;\n\n final List&lt;Uint8List&gt; _chunkQueue = [];\n int _totalBufferedBytes = 0;\n int _chunkOffset = 0;\n int? _currentFfmpegPid;\n\n int get _currentBufferSize =&gt; (_mediaInfo?.width ?? 0) * (_mediaInfo?.height ?? 0) * 4;\n\n StreamSubscription&lt;List&lt;int&gt;&gt;? _dataReceiver;\n bool _reachEnd = false;\n int? _currentPlayKey;\n\n Future&lt;MediaInfo?&gt; play(\n String path, {\n void Function(Duration pos)? onProgress,\n void Function()? onComplete,\n void Function(int code, List&lt;String&gt; info)? onError,\n bool loop = true,\n bool? isLive,\n }) {\n _currentPlayKey = DateTime.now().microsecondsSinceEpoch;\n return _play(\n _currentPlayKey!,\n path,\n onProgress: onProgress,\n onComplete: onComplete,\n onError: onError,\n loop: loop,\n isLive: isLive,\n fromLoop: false,\n );\n }\n\n Future&lt;MediaInfo?&gt; _play(\n int playKey,\n String path, {\n void Function(Duration pos)? onProgress,\n void Function()? onComplete,\n void Function(int code, List&lt;String&gt; info)? onError,\n required bool fromL
<option name="conversations" value="[{&quot;id&quot;:&quot;92180057-2e28-4282-85af-50e8c025b356&quot;,&quot;title&quot;:null,&quot;messages&quot;:[{&quot;prompt&quot;:&quot;你是谁&quot;,&quot;id&quot;:&quot;8b37b783-dcd9-4045-95e7-94f552dcfe5e&quot;,&quot;response&quot;:&quot;我是一个集成在 JetBrains IDE AI \n\n\n1. ****\n2. ****使\n3. **** Bug \n\n使 `psi_element://` `file://` 便 IDE \n\n `aim_master_workspace` &quot;,&quot;referencedFilePaths&quot;:null,&quot;conversationsHistoryIds&quot;:null,&quot;imageFilePath&quot;:null,&quot;webSearchIncluded&quot;:false,&quot;personaName&quot;:null,&quot;tool_calls&quot;:null,&quot;tool_call_results&quot;:null},{&quot;prompt&quot;:&quot;ffmpeg10fps120&quot;,&quot;id&quot;:&quot;b8c36f56-56c1-4f93-9a83-e6b635f9dc03&quot;,&quot;response&quot;:&quot; 10 120 fps 使 FFmpeg `testsrc` `drawtext` \n\n### \n\n1. ****使 `testsrc` \n2. **** `drawtext` `text` `n` `r`\n3. **** `libx264` MP4 \n\n### FFmpeg \n\n```bash\nffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=120 \\\n-vf \&quot;drawtext=fontsize=100:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text='%{eif\\:n/120\\:d}'\&quot; \\\n-c:v libx264 -pix_fmt yuv420p output.mp4\n```\n\n### \n\n* `-f lavfi -i testsrc`: 使 FFmpeg \n * `duration=10`: 10 \n * `size=1280x720`: \n * `rate=120`: 120 fps\n* `-vf \&quot;drawtext=...\&quot;`: \n * `fontsize=100:fontcolor=white`: \n * `x=(w-text_w)/2:y=(h-text_h)/2`: \n * `text='%{eif\\:n/120\\:d}'`: ****\n * `n`: 0 \n * `120`: \n * `n/120`: \n * `eif(..., d)`: \n* `-c:v libx264`: 使 H.264 \n* `-pix_fmt yuv420p`: \n\n `output.mp4` 0 9 10 &quot;,&quot;referencedFilePaths&quot;:null,&quot;conversationsHistoryIds&quot;:null,&quot;imageFilePath&quot;:null,&quot;webSearchIncluded&quot;:false,&quot;personaName&quot;:null,&quot;tool_calls&quot;:null,&quot;tool_call_results&quot;:null}],&quot;createdOn&quot;:[2026,3,12,20,58,44,686967279],&quot;updatedOn&quot;:[2026,3,12,22,58,3,86358461],&quot;discardTokenLimit&quot;:false,&quot;projectPath&quot;:&quot;/home/debuggerx/StudioProjects/aim_master_workspace&quot;},{&quot;id&quot;:&quot;c6edd6cf-13ca-4b2a-91fe-fd64aa360432&quot;,&quot;title&quot;:null,&quot;messages&quot;:[{&quot;prompt&quot;:&quot;skip\n\n```dart:/home/debuggerx/StudioProjects/flutter_ffmpeg_sw_player/lib/src/controller.dart\n_totalBufferedBytes\n```&quot;,&quot;id&quot;:&quot;b5b40eca-7171-498e-85d7-641982c28
</component>
</application>