-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
a: videoVideo playbackVideo playbackc: parityWorks on one platform but not anotherWorks on one platform but not anotherc: regressionIt was better in the past than it is nowIt was better in the past than it is nowc: renderingUI glitches reported at the engine/skia or impeller rendering levelUI glitches reported at the engine/skia or impeller rendering levelcustomer: googleVarious Google teamsVarious Google teamsengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.f: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.found in release: 3.40Found to occur in 3.40Found to occur in 3.40frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: video_playerThe Video Player pluginThe Video Player pluginpackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specificallyr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-androidOwned by Android platform teamOwned by Android platform team
Description
Help us understand the severity of this issue
- causing severe production issues e.g. malfunctions or data loss
- blocking next binary release
- blocking a client feature launch within a quarter
- nice-to-have but does not block a launch within the next quarter
Steps to reproduce
- Run the Minimal repro app with code sample below
- Press Go to Video
- Fully play the video
- Press back
- Do (2), (3), (4) again
Expected results
Home page with "Go to video" is rendered
Actual results
UI gets "stalled" and we can't interact with UI. This issue is NOT reproducible with Google3 HEAD ~10 days back
Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Video Player Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const FirstPage(),
);
}
}
class FirstPage extends StatelessWidget {
const FirstPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('First Page')),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.of(
context,
).push(MaterialPageRoute(builder: (context) => const SecondPage()));
},
child: const Text('Go to Video'),
),
),
);
}
}
class SecondPage extends StatefulWidget {
const SecondPage({super.key});
@override
State<SecondPage> createState() => _SecondPageState();
}
class _SecondPageState extends State<SecondPage> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller =
VideoPlayerController.networkUrl(
Uri.parse(
'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4',
),
viewType: VideoViewType.platformView,
)
..initialize().then((_) {
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
setState(() {});
_controller.play();
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Video Page')),
body: Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: const CircularProgressIndicator(),
),
);
}
}Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Logs
Logs
FlutterView E Flutter engine view not set.
CCodecConfig D c2 config diff is c2::u32 raw.channel-mask.value = 12
CCodecBuffers D [c2.android.aac.decoder#994:Output[N]] popFromStashAndRegister: at 1000000000000us, output format changed to AMessage(what = 0x00000000) = {
D int32_t aac-drc-album-mode = 0
D int32_t aac-drc-boost-level = 127
D int32_t aac-drc-cut-level = 127
D int32_t aac-drc-effect-type = 3
D int32_t aac-drc-output-loudness = -1
D int32_t aac-encoded-target-level = -1
D int32_t aac-max-output-channel_count = 8
D int32_t aac-target-ref-level = 64
D int32_t channel-count = 2
D int32_t channel-mask = 12
D int32_t max-output-channel-count = 8
D string mime = "audio/raw"
D int32_t sample-rate = 48000
D int32_t android._config-pcm-encoding = 2
D }
CCodecConfig D c2 config diff is c2::u32 raw.crop.height = 720
D c2::u32 raw.crop.left = 0
D c2::u32 raw.crop.top = 0
D c2::u32 raw.crop.width = 1280
FlutterView E Flutter engine view not set.
E Flutter engine view not set.
E Flutter engine view not set.
E Flutter engine view not set.
PlatformViewsController I Using hybrid composition for platform view: 1
FlutterView E Flutter engine view not set.
E Flutter engine view not set.
SurfaceUtils D connecting to surface 0xb400007879ea0bc0, reason connectToSurface
MediaCodec I [c2.exynos.h264.decoder] setting surface generation to 5538830
SurfaceUtils D disconnecting from surface 0xb400007879ea0bc0, reason connectToSurface(reconnect)
D connecting to surface 0xb400007879ea0bc0, reason connectToSurface(reconnect)
odec2-OutputBufferQueue D remote graphic buffer migration 9/9
Codec2Client D setOutputSurface -- failed to set consumer usage (6/BAD_INDEX)
D setOutputSurface -- generation=5538830 consumer usage=0x900
D Surface configure completed
SurfaceUtils D disconnecting from surface 0xb400007879e80cd0, reason disconnectFromSurface
AudioTrack D getTimestamp_l(2594): device stall time corrected using current time 105752426749592
W getTimestamp_l(2594): retrograde timestamp time corrected, 105752426262328 < 105752426749592
BufferPoolAccessor2.0 D bufferpool2 0xb4000077d9e92618 : 0(0 size) total buffers - 0(0 size) used buffers - 165/170 (recycle/alloc) - 5/165 (fetch/transfer)
D evictor expired: 1, evicted: 1
D bufferpool2 0xb4000077d9e15f08 : 0(0 size) total buffers - 0(0 size) used buffers - 105/110 (recycle/alloc) - 5/106 (fetch/transfer)
D evictor expired: 1, evicted: 1
PipelineWatcher D onInputBufferReleased: frameIndex not found (120); ignored
AudioTrack D stop(2594): called with 193536 frames delivered
MediaCodec D keep callback message for reclaim
CCodecConfig I query failed after returning 15 values (BAD_INDEX)
Codec2Client W query -- param skipped: index = 1073743886.
W query -- param skipped: index = 1610614798.
MediaCodec D keep callback message for reclaim
CCodecConfig I query failed after returning 20 values (BAD_INDEX)
Codec2Client W query -- param skipped: index = 1342179345.
W query -- param skipped: index = 2415921170.
W query -- param skipped: index = 1610614798.
SurfaceUtils D connecting to surface 0xb400007879e8fb40, reason connectToSurface
MediaCodec I [c2.exynos.h264.decoder] setting surface generation to 5538831
SurfaceUtils D disconnecting from surface 0xb400007879e8fb40, reason connectToSurface(reconnect)
D connecting to surface 0xb400007879e8fb40, reason connectToSurface(reconnect)
odec2-OutputBufferQueue D remote graphic buffer migration 0/0
Codec2Client D setOutputSurface -- failed to set consumer usage (6/BAD_INDEX)
D setOutputSurface -- generation=5538831 consumer usage=0x900
D Surface configure completed
SurfaceUtils D disconnecting from surface 0xb400007879ea0bc0, reason disconnectFromSurface
ExoPlayerImpl I Release be48da5 [AndroidXMedia3/1.9.0-rc01] [panther, Pixel 7, Google, 33] [media3.common, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor]
MediaCodec D keep callback message for reclaim
CCodecConfig I query failed after returning 15 values (BAD_INDEX)
Codec2Client W query -- param skipped: index = 1073743886.
W query -- param skipped: index = 1610614798.
MediaCodec D keep callback message for reclaim
CCodecConfig I query failed after returning 20 values (BAD_INDEX)
Codec2Client W query -- param skipped: index = 1342179345.
W query -- param skipped: index = 2415921170.
W query -- param skipped: index = 1610614798.
SurfaceUtils D connecting to surface 0xb400007879ea2dd0, reason connectToSurface
MediaCodec I [c2.exynos.h264.decoder] setting surface generation to 5538832
SurfaceUtils D disconnecting from surface 0xb400007879ea2dd0, reason connectToSurface(reconnect)
D connecting to surface 0xb400007879ea2dd0, reason connectToSurface(reconnect)
odec2-OutputBufferQueue D remote graphic buffer migration 0/0
Codec2Client D setOutputSurface -- failed to set consumer usage (6/BAD_INDEX)
D setOutputSurface -- generation=5538832 consumer usage=0x900
D Surface configure completed
SurfaceUtils D disconnecting from surface 0xb400007879e8fb40, reason disconnectFromSurface
CCodecBufferChannel D [c2.exynos.h264.decoder#454] MediaCodec discarded an unknown buffer
D [c2.exynos.h264.decoder#454] MediaCodec discarded an unknown buffer
D [c2.exynos.h264.decoder#454] MediaCodec discarded an unknown buffer
D [c2.exynos.h264.decoder#454] MediaCodec discarded an unknown buffer
D [c2.android.aac.decoder#994] MediaCodec discarded an unknown buffer
D [c2.android.aac.decoder#994] MediaCodec discarded an unknown buffer
D [c2.android.aac.decoder#994] MediaCodec discarded an unknown buffer
D [c2.android.aac.decoder#994] MediaCodec discarded an unknown buffer
hw-BpHwBinder I onLastStrongRef automatically unlinking death recipients
MediaCodec D flushMediametrics
D flushMediametrics
SurfaceUtils D disconnecting from surface 0xb400007879ea2dd0, reason disconnectFromSurface
hw-BpHwBinder I onLastStrongRef automatically unlinking death recipients
MediaCodec D flushMediametrics
D flushMediametrics
BufferPoolAccessor2.0 D bufferpool2 0xb4000077d9e682d8 : 0(0 size) total buffers - 0(0 size) used buffers - 200/205 (recycle/alloc) - 5/191 (fetch/transfer)
D bufferpool2 0xb4000077d9e1de38 : 0(0 size) total buffers - 0Flutter Doctor output
Google3 HEAD
Doctor output
[Paste your output here]Metadata
Metadata
Assignees
Labels
a: videoVideo playbackVideo playbackc: parityWorks on one platform but not anotherWorks on one platform but not anotherc: regressionIt was better in the past than it is nowIt was better in the past than it is nowc: renderingUI glitches reported at the engine/skia or impeller rendering levelUI glitches reported at the engine/skia or impeller rendering levelcustomer: googleVarious Google teamsVarious Google teamsengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.f: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.found in release: 3.40Found to occur in 3.40Found to occur in 3.40frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: video_playerThe Video Player pluginThe Video Player pluginpackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specificallyr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-androidOwned by Android platform teamOwned by Android platform team