Skip to content

[interactive_media_ads]: Back-to-back ads not working on Android #174243

@DavidDWiser

Description

@DavidDWiser

Steps to reproduce

  1. Disable any system-wide ad blockers running on your machine
  2. Create a new flutter project and paste the example code from the interactive_media_ads package or use the provided code
  3. Replace the adTagUrl with a VMAP sample url from this page
  4. Run the project on Android (on iOS it works)

Expected results

After the ad loads, I should see a sample ad playing a countdown.
Once that counter reaches zero it should close or move to the next one (depending on the ad type specified by the VMAP sample url).
The ads should be working on both iOS and Android.
The behaviour should be consistent on both iOS and Android for any kind of VMAP ad tag.

VMAP Sample ad tags
VMAP Session Ad Rule Pre-roll: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sar%3Da0f2&ciu_szs=300x250&ad_rule=1&gdfp_req=1&output=vmap&unviewed_position_start=1&env=vp&correlator=

VMAP Pre-roll: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpreonly&ciu_szs=300x250%2C728x90&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator=

VMAP Pre-roll + Bumper: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpreonlybumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator=

VMAP Post-roll: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpostonly&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator=

VMAP Post-roll + Bumper: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpostonlybumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator=

VMAP Mid-roll ad pod with 2 skippable ads: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_skip_ad_samples&sz=640x480&cust_params=sample_ar%3Dmidskiponly&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=

VMAP Pre-, Mid-, and Post-rolls, Single Ads: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpost&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=

VMAP - Pre-roll Single Ad, Mid-roll Standard Pod with 3 ads, Post-roll Single Ad: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostpod&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=

VMAP - Pre-roll Single Ad, Mid-roll Optimized Pod with 3 Ads, Post-roll Single Ad: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostoptimizedpod&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=

VMAP - Pre-roll Single Ad, Mid-roll Standard Pod with 3 Ads, Post-roll Single Ad (bumpers around all ad breaks): 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostpodbumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=

VMAP - Pre-roll Single Ad, Mid-roll Optimized Pod with 3 Ads, Post-roll Single Ad (bumpers around all ad breaks): 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostoptimizedpodbumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=

VMAP - Pre-roll Single Ad, Mid-roll Standard Pods with 5 Ads Every 10 Seconds, Post-roll Single Ad: 
https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostlongpod&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=

If there are two or more ads playing one after the other, each next ad should start after the previous one has finished playing or has been skipped.

Actual results

Some ads will close after playing while some won't.

The behaviour is not consistent across iOS and Android.

On Android, if two or more ads are playing one after another, the first ad gets stuck at 1 second remaining and does not complete. This blocks any further ads from playing.

Testing the same example on iOS, the ads are displayed correctly one after the other.

Code sample

pubspec.yaml
name: ima_test
description: "Interactive Media Ads Test"
publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: '>=3.0.5 <4.0.0'
  flutter: '>=3.13.0 <4.0.0'

dependencies:
  cupertino_icons: ^1.0.8
  flutter:
    sdk: flutter
  interactive_media_ads: ^0.2.6+4
  video_player: ^2.10.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^5.0.0

flutter:
  uses-material-design: true
main.dart
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:interactive_media_ads/interactive_media_ads.dart';
import 'package:video_player/video_player.dart';

void main() {
  runApp(
    const MaterialApp(
      home: AdExampleWidget(
        // TODO: Switch the tag below to change the ad behavior.
        vmapTag: VMAPSampleTags.ad1,
      ),
    ),
  );
}

/// Example widget displaying an Ad before a video.
class AdExampleWidget extends StatefulWidget {
  /// Constructs an [AdExampleWidget].
  const AdExampleWidget({required this.vmapTag, super.key});
  final VMAPSampleTags vmapTag;

  @override
  State<AdExampleWidget> createState() => _AdExampleWidgetState();
}

class _AdExampleWidgetState extends State<AdExampleWidget>
    with WidgetsBindingObserver {
  // The AdsLoader instance exposes the request ads method.
  late final AdsLoader _adsLoader;

  // AdsManager exposes methods to control ad playback and listen to ad events.
  AdsManager? _adsManager;

  // Last state received in `didChangeAppLifecycleState`.
  AppLifecycleState _lastLifecycleState = AppLifecycleState.resumed;

  // Whether the widget should be displaying the content video. The content
  // player is hidden while Ads are playing.
  bool _shouldShowContentVideo = false;

  // Controls the content video player.
  late final VideoPlayerController _contentVideoController;

  // Periodically updates the SDK of the current playback progress of the
  // content video.
  Timer? _contentProgressTimer;

  // Provides the SDK with the current playback progress of the content video.
  // This is required to support mid-roll ads.
  final ContentProgressProvider _contentProgressProvider =
      ContentProgressProvider();

  late final CompanionAdSlot companionAd = CompanionAdSlot(
    size: CompanionAdSlotSize.fixed(width: 300, height: 250),
    onClicked: () => debugPrint('Companion Ad Clicked'),
  );

  late final AdDisplayContainer _adDisplayContainer = AdDisplayContainer(
    companionSlots: <CompanionAdSlot>[companionAd],
    onContainerAdded: (AdDisplayContainer container) {
      _adsLoader = AdsLoader(
        container: container,
        onAdsLoaded: (OnAdsLoadedData data) {
          final AdsManager manager = data.manager;
          _adsManager = data.manager;

          manager.setAdsManagerDelegate(
            AdsManagerDelegate(
              onAdEvent: (AdEvent event) {
                debugPrint('OnAdEvent: ${event.type} => ${event.adData}');
                switch (event.type) {
                  case AdEventType.loaded:
                    manager.start();
                  case AdEventType.contentPauseRequested:
                    _pauseContent();
                  case AdEventType.contentResumeRequested:
                    _resumeContent();
                  case AdEventType.allAdsCompleted:
                    manager.destroy();
                    _adsManager = null;
                  case AdEventType.clicked:
                  case AdEventType.complete:
                  case _:
                }
              },
              onAdErrorEvent: (AdErrorEvent event) {
                debugPrint('AdErrorEvent: ${event.error.message}');
                _resumeContent();
              },
            ),
          );

          manager.init(settings: AdsRenderingSettings(enablePreloading: true));
        },
        onAdsLoadError: (AdsLoadErrorData data) {
          debugPrint('OnAdsLoadError: ${data.error.message}');
          _resumeContent();
        },
      );

      // Ads can't be requested until the `AdDisplayContainer` has been added to
      // the native View hierarchy.
      _requestAds(container);
    },
  );

  @override
  void initState() {
    super.initState();
    // Adds this instance as an observer for `AppLifecycleState` changes.
    WidgetsBinding.instance.addObserver(this);

    _contentVideoController = VideoPlayerController.networkUrl(
      Uri.parse(
        'https://storage.googleapis.com/gvabox/media/samples/stock.mp4',
      ),
    )
      ..addListener(() {
        if (_contentVideoController.value.isCompleted) {
          _adsLoader.contentComplete();
        }
        setState(() {});
      })
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      });
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        if (!_shouldShowContentVideo) {
          _adsManager?.resume();
        }
      case AppLifecycleState.inactive:
        // Pausing the Ad video player on Android can only be done in this state
        // because it corresponds to `Activity.onPause`. This state is also
        // triggered before resume, so this will only pause the Ad if the app is
        // in the process of being sent to the background.
        if (!_shouldShowContentVideo &&
            _lastLifecycleState == AppLifecycleState.resumed) {
          _adsManager?.pause();
        }
      case AppLifecycleState.hidden:
      case AppLifecycleState.paused:
      case AppLifecycleState.detached:
    }
    _lastLifecycleState = state;
  }

  Future<void> _requestAds(AdDisplayContainer container) {
    return _adsLoader.requestAds(
      AdsRequest(
        adTagUrl: widget.vmapTag.adTagUrl,
        contentProgressProvider: _contentProgressProvider,
      ),
    );
  }

  Future<void> _resumeContent() async {
    setState(() {
      _shouldShowContentVideo = true;
    });

    if (_adsManager != null) {
      _contentProgressTimer = Timer.periodic(
        const Duration(milliseconds: 200),
        (Timer timer) async {
          if (_contentVideoController.value.isInitialized) {
            final Duration? progress = await _contentVideoController.position;
            if (progress != null) {
              await _contentProgressProvider.setProgress(
                progress: progress,
                duration: _contentVideoController.value.duration,
              );
            }
          }
        },
      );
    }

    await _contentVideoController.play();
  }

  Future<void> _pauseContent() {
    setState(() {
      _shouldShowContentVideo = false;
    });
    _contentProgressTimer?.cancel();
    _contentProgressTimer = null;
    return _contentVideoController.pause();
  }

  @override
  void dispose() {
    super.dispose();
    _contentProgressTimer?.cancel();
    _contentVideoController.dispose();
    _adsManager?.destroy();
    WidgetsBinding.instance.removeObserver(this);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          spacing: 100,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            SizedBox(
              width: 300,
              child: !_contentVideoController.value.isInitialized
                  ? Container()
                  : AspectRatio(
                      aspectRatio: _contentVideoController.value.aspectRatio,
                      child: Stack(
                        children: <Widget>[
                          // The display container must be on screen before any Ads can be
                          // loaded and can't be removed between ads. This handles clicks for
                          // ads.
                          _adDisplayContainer,
                          if (_shouldShowContentVideo)
                            VideoPlayer(_contentVideoController),
                        ],
                      ),
                    ),
            ),
            ColoredBox(
              color: Colors.green,
              child: SizedBox(
                width: 300,
                height: 250,
                child: companionAd.buildWidget(context),
              ),
            ),
          ],
        ),
      ),
      floatingActionButton:
          _contentVideoController.value.isInitialized && _shouldShowContentVideo
              ? FloatingActionButton(
                  onPressed: () {
                    setState(() {
                      _contentVideoController.value.isPlaying
                          ? _contentVideoController.pause()
                          : _contentVideoController.play();
                    });
                  },
                  child: Icon(
                    _contentVideoController.value.isPlaying
                        ? Icons.pause
                        : Icons.play_arrow,
                  ),
                )
              : null,
    );
  }
}

/// Sample ad tags for testing with the Interactive Media Ads SDK.
/// Taken from: https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
enum VMAPSampleTags {
  // Tags below are not working

  /// [x] VMAP Pre-roll + Bumper (two ads)
  ad1('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpreonlybumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator='),

  /// [x] VMAP Post-roll + Bumper (two ads)
  ad2('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpostonlybumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator='),

  /// [x] VMAP Mid-roll ad pod with 2 skippable ads (Does not play the second ad)
  ad3('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_skip_ad_samples&sz=640x480&cust_params=sample_ar%3Dmidskiponly&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator='),

  /// [x] VMAP - Pre-roll Single Ad, Mid-roll Standard Pod with 3 ads, Post-roll Single Ad
  ad4('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostpod&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator='),

  /// [x] VMAP - Pre-roll Single Ad, Mid-roll Standard Pod with 3 Ads, Post-roll Single Ad (bumpers around all ad breaks)
  ad5('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostpodbumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator='),

  /// [x] VMAP - Pre-roll Single Ad, Mid-roll Standard Pods with 5 Ads Every 10 Seconds, Post-roll Single Ad
  ad6('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostlongpod&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator='),

  /// [x] VMAP - Pre-roll Single Ad, Mid-roll Optimized Pod with 3 Ads, Post-roll Single Ad (bumpers around all ad breaks)
  ad7('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpostoptimizedpodbumper&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator='),

  // Tags below are working

  /// [✓] VMAP Session Ad Rule Pre-roll
  ad8('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sar%3Da0f2&ciu_szs=300x250&ad_rule=1&gdfp_req=1&output=vmap&unviewed_position_start=1&env=vp&correlator='),

  /// [✓] VMAP Pre-roll
  ad9('https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpreonly&ciu_szs=300x250%2C728x90&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator='),

  /// [✓] VMAP Post-roll
  ad10(
      'https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpostonly&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&correlator='),

  /// [✓] VMAP Pre-, Mid-, and Post-rolls, Single Ads
  ad11(
      'https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/vmap_ad_samples&sz=640x480&cust_params=sample_ar%3Dpremidpost&ciu_szs=300x250&gdfp_req=1&ad_rule=1&output=vmap&unviewed_position_start=1&env=vp&cmsid=496&vid=short_onecue&correlator=');

  const VMAPSampleTags(this.adTagUrl);

  final String adTagUrl;
}

Screenshots or Video

Below you can see the current behaviour (Android and iOS) when VMAP Pre-roll + Bumper sample tag is used.

Android screen recording
Screen.Recording.2025-08-21.at.22.08.33.mov
iOS screen recording
Screen.Recording.2025-08-21.at.22.38.51.mov

Logs

Android Logs
Performing hot restart...
Syncing files to device sdk gphone64 arm64...
V/MediaPlayer( 5514): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer( 5514): cleanDrmObj: mDrmObj=null mDrmSessionId=null
V/MediaPlayer( 5514): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer( 5514): cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/ImeTracker( 5514): com.example.ima_test:a0d37c7c: onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT_CLOSE_CURRENT_SESSION fromUser false
D/InsetsController( 5514): hide(ime(), fromIme=false)
I/ImeTracker( 5514): com.example.ima_test:a0d37c7c: onCancelled at PHASE_CLIENT_ALREADY_HIDDEN
Restarted application in 616ms.
I/ExoPlayerImpl( 5514): Release 7aebf [AndroidXMedia3/1.5.1] [emu64a, sdk_gphone64_arm64, Google, 36] [media3.common, media3.exoplayer, media3.decoder, media3.datasource, media3.extractor]
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b07c458 : 4(25165824 size) total buffers - 4(25165824 size) used buffers - 16/22 (recycle/alloc) - 8/22 (fetch/transfer)
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b111928 : 0(0 size) total buffers - 0(0 size) used buffers - 22/27 (recycle/alloc) - 13/27 (fetch/transfer)
D/MediaCodec( 5514): keep callback message for reclaim
I/CCodecConfig( 5514): query failed after returning 12 values (BAD_INDEX)
W/Codec2Client( 5514): query -- param skipped: index = 1342179345.
W/Codec2Client( 5514): query -- param skipped: index = 2415921170.
W/Codec2Client( 5514): query -- param skipped: index = 1610614798.
D/CCodecBuffers( 5514): [c2.android.aac.decoder#798:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 0
D/CCodecBuffers( 5514): [c2.android.aac.decoder#798:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 1
D/MediaCodec( 5514): keep callback message for reclaim
I/CCodecConfig( 5514): query failed after returning 21 values (BAD_INDEX)
W/Codec2Client( 5514): query -- param skipped: index = 1342179345.
W/Codec2Client( 5514): query -- param skipped: index = 2415921170.
W/Codec2Client( 5514): query -- param skipped: index = 1610614798.
D/SurfaceUtils( 5514): connecting to surface 0xb4000073eb0a6950, reason connectToSurface
I/MediaCodec( 5514): [c2.goldfish.h264.decoder] setting surface generation to 5646360
D/SurfaceUtils( 5514): disconnecting from surface 0xb4000073eb0a6950, reason connectToSurface(reconnect)
D/SurfaceUtils( 5514): connecting to surface 0xb4000073eb0a6940, reason connectToSurface(reconnect-with-listener)
D/Codec2-OutputBufferQueue( 5514): remote graphic buffer migration 1/1
D/Codec2Client( 5514): setOutputSurface -- failed to set consumer usage (6/BAD_INDEX)
D/Codec2Client( 5514): setOutputSurface -- generation=5646360 consumer usage=0x900
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#289] flushed work; ignored.
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#289] Discard frames from previous generation.
D/Codec2Client( 5514): Surface configure completed
D/SurfaceUtils( 5514): disconnecting from surface 0xb4000073eb066b70, reason disconnectFromSurface
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#289] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#289] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#289] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#289] MediaCodec discarded an unknown buffer
D/SurfaceUtils( 5514): disconnecting from surface 0xb4000073eb0a6950, reason disconnectFromSurface
I/hw-BpHwBinder( 5514): onLastStrongRef automatically unlinking death recipients
D/CCodecBufferChannel( 5514): [c2.android.aac.decoder#798] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel( 5514): [c2.android.aac.decoder#798] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel( 5514): [c2.android.aac.decoder#798] MediaCodec discarded an unknown buffer
D/CCodecBufferChannel( 5514): [c2.android.aac.decoder#798] MediaCodec discarded an unknown buffer
I/hw-BpHwBinder( 5514): onLastStrongRef automatically unlinking death recipients
I/ExoPlayerImpl( 5514): Init 5eecb97 [AndroidXMedia3/1.5.1] [emu64a, sdk_gphone64_arm64, Google, 36]
I/PlatformViewsController( 5514): Hosting view in view hierarchy for platform view: 0
I/PlatformViewsController( 5514): PlatformView is using SurfaceProducer backend
D/MetadataUtil( 5514): Skipped unknown metadata entry: gsst
D/MetadataUtil( 5514): Skipped unknown metadata entry: gstd
D/MetadataUtil( 5514): Skipped unknown metadata entry: gssd
D/MetadataUtil( 5514): Skipped unknown metadata entry: gspu
D/MetadataUtil( 5514): Skipped unknown metadata entry: gspm
D/MetadataUtil( 5514): Skipped unknown metadata entry: gshh
I/DMCodecAdapterFactory( 5514): Creating an asynchronous MediaCodec adapter for track type video
D/CCodec  ( 5514): allocate(c2.goldfish.h264.decoder)
I/CCodec  ( 5514): setting up 'default' as default (vendor) store
I/CCodec  ( 5514): Created component [c2.goldfish.h264.decoder]
D/CCodecConfig( 5514): read media type: video/avc
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: output.buffers.pool-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: algo.buffers.pool-ids.values
D/ReflectedParamUpdater( 5514): ignored struct field coded.color-format.locations
D/CCodecConfig( 5514): ignoring local param raw.size (0xd2001800) as it is already supported
D/CCodecConfig( 5514): ignoring local param default.color (0x5200180b) as it is already supported
D/ReflectedParamUpdater( 5514): ignored struct field raw.hdr-static-info.mastering
I/CCodecConfig( 5514): query failed after returning 12 values (BAD_INDEX)
D/CCodecConfig( 5514): c2 config diff is Dict {
D/CCodecConfig( 5514):   c2::u32 coded.pl.level = 20496
D/CCodecConfig( 5514):   c2::u32 coded.pl.profile = 20481
D/CCodecConfig( 5514):   c2::u32 coded.vui.color.matrix = 0
D/CCodecConfig( 5514):   c2::u32 coded.vui.color.primaries = 0
D/CCodecConfig( 5514):   c2::u32 coded.vui.color.range = 2
D/CCodecConfig( 5514):   c2::u32 coded.vui.color.transfer = 0
D/CCodecConfig( 5514):   c2::u32 default.color.matrix = 0
D/CCodecConfig( 5514):   c2::u32 default.color.primaries = 0
D/CCodecConfig( 5514):   c2::u32 default.color.range = 0
D/CCodecConfig( 5514):   c2::u32 default.color.transfer = 0
D/CCodecConfig( 5514):   c2::u32 input.buffers.max-size.value = 6291456
D/CCodecConfig( 5514):   c2::u32 input.delay.value = 0
D/CCodecConfig( 5514):   string input.media-type.value = "video/avc"
D/CCodecConfig( 5514):   c2::u32 output.delay.value = 8
D/CCodecConfig( 5514):   string output.media-type.value = "video/raw"
D/CCodecConfig( 5514):   c2::u32 raw.color.matrix = 0
D/CCodecConfig( 5514):   c2::u32 raw.color.primaries = 0
D/CCodecConfig( 5514):   c2::u32 raw.color.range = 2
D/CCodecConfig( 5514):   c2::u32 raw.color.transfer = 0
D/CCodecConfig( 5514):   c2::u32 raw.max-size.height = 240
D/CCodecConfig( 5514):   c2::u32 raw.max-size.width = 320
D/CCodecConfig( 5514):   c2::u32 raw.pixel-format.value = 35
D/CCodecConfig( 5514):   c2::i32 raw.rotation.flip = 0
D/CCodecConfig( 5514):   c2::i32 raw.rotation.value = 0
D/CCodecConfig( 5514):   c2::u32 raw.sar.height = 1
D/CCodecConfig( 5514):   c2::u32 raw.sar.width = 1
D/CCodecConfig( 5514):   c2::u32 raw.size.height = 240
D/CCodecConfig( 5514):   c2::u32 raw.size.width = 320
D/CCodecConfig( 5514):   c2:
W/ColorUtils( 5514): expected specified color aspects (2:0:0:0)
I/MediaCodec( 5514): MediaCodec will operate in async mode
D/SurfaceUtils( 5514): connecting to surface 0xb4000073eb097ae0, reason connectToSurface
I/MediaCodec( 5514): [c2.goldfish.h264.decoder] setting surface generation to 5646361
D/SurfaceUtils( 5514): disconnecting from surface 0xb4000073eb097ae0, reason connectToSurface(reconnect)
D/SurfaceUtils( 5514): connecting to surface 0xb4000073eb097ad0, reason connectToSurface(reconnect-with-listener)
D/CCodec  ( 5514): [c2.goldfish.h264.decoder] buffers are bound to CCodec for this session
D/CCodecConfig( 5514): no c2 equivalents for log-session-id
D/CCodecConfig( 5514): no c2 equivalents for importance
D/CCodecConfig( 5514): no c2 equivalents for csd-1
D/CCodecConfig( 5514): no c2 equivalents for native-window
D/CCodecConfig( 5514): no c2 equivalents for native-window-generation
D/CCodecConfig( 5514): no c2 equivalents for flags
D/CCodecConfig( 5514): config failed => CORRUPTED
D/CCodecConfig( 5514): c2 config diff is   c2::u32 raw.max-size.height = 480
D/CCodecConfig( 5514):   c2::u32 raw.max-size.width = 854
D/CCodecConfig( 5514):   c2::u32 raw.size.height = 480
D/CCodecConfig( 5514):   c2::u32 raw.size.width = 854
W/Codec2Client( 5514): query -- param skipped: index = 1107298332.
D/CCodec  ( 5514): client requested max input size 50856, which is smaller than what component recommended (6291456); overriding with component recommendation.
W/CCodec  ( 5514): This behavior is subject to change. It is recommended that app developers double check whether the requested max input size is in reasonable range.
D/CCodec  ( 5514): encoding statistics level = 0
D/CCodec  ( 5514): setup formats input: AMessage(what = 0x00000000) = {
D/CCodec  ( 5514):   int32_t height = 480
D/CCodec  ( 5514):   int32_t level = 65536
D/CCodec  ( 5514):   int32_t max-input-size = 6291456
D/CCodec  ( 5514):   string mime = "video/avc"
D/CCodec  ( 5514):   int32_t profile = 65536
D/CCodec  ( 5514):   int32_t width = 854
D/CCodec  ( 5514):   Rect crop(0, 0, 853, 479)
D/CCodec  ( 5514): }
D/CCodec  ( 5514): setup formats output: AMessage(what = 0x00000000) = {
D/CCodec  ( 5514):   int32_t android._color-format = 2135033992
D/CCodec  ( 5514):   int32_t android._video-scaling = 1
D/CCodec  ( 5514):   int32_t rotation-degrees = 0
D/CCodec  ( 5514):   int32_t color-standard = 1
D/CCodec  ( 5514):   int32_t color-range = 2
D/CCodec  ( 5514):   int32_t color-transfer = 3
D/CCodec  ( 5514):   int32_t sar-height = 1
D/CCodec  ( 5514):   int32_t sar-width = 1
D/CCodec  ( 5514):   Rect crop(0, 0, 853, 479)
D/CCodec  ( 5514):   int32_t width = 854
D/CCodec  ( 5514):   int32_t height = 480
D/CCodec  ( 5514):   int32_t max-height = 480
D/CCodec  ( 5514):   int32_t max-width = 854
D/CCodec  ( 5514):   string mime = "video/raw"
D/CCodec  ( 5514):   int32_t android._dataspace = 260
D/CCodec  ( 5514):   int32_t color-format = 2130708361
D/CCodec  ( 5514): }
I/CCodecConfig( 5514): query failed after returning 12 values (BAD_INDEX)
E/xample.ima_test( 5514): Failed to query component interface for required system resources: 6
D/MediaCodec( 5514): keep callback message for reclaim
W/Codec2Client( 5514): query -- param skipped: index = 1342179345.
W/Codec2Client( 5514): query -- param skipped: index = 2415921170.
W/Codec2Client( 5514): query -- param skipped: index = 1610614798.
W/Codec2Client( 5514): query -- param skipped: index = 2684356609.
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#196] Created input block pool with allocatorID 16 => poolID 41 - OK (0)
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#196] Query output surface allocator returned 0 params => BAD_INDEX (6)
I/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#196] Created output block pool with allocatorID 18 => poolID 46 - OK
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#196] Configured output block pool ids 46 => OK
D/Codec2-OutputBufferQueue( 5514): remote graphic buffer migration 0/0
D/Codec2Client( 5514): setOutputSurface -- failed to set consumer usage (6/BAD_INDEX)
D/Codec2Client( 5514): setOutputSurface -- generation=5646361 consumer usage=0x900
D/Codec2Client( 5514): Surface configure completed
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b097968 : 0(0 size) total buffers - 0(0 size) used buffers - 20/26 (recycle/alloc) - 6/25 (fetch/transfer)
D/BufferPoolAccessor2.0( 5514): Destruction - bufferpool2 0xb40000748b097968 cached: 0/0M, 0/0% in use; allocs: 26, 77% recycled; transfers: 25, 76% unfetched
I/DMCodecAdapterFactory( 5514): Creating an asynchronous MediaCodec adapter for track type audio
D/CCodec  ( 5514): allocate(c2.android.aac.decoder)
D/CCodecBufferChannel( 5514): [c2.goldfish.h264.decoder#196] Ignoring stale input buffer done callback: last flush index = 0, frameIndex = 0
I/CCodec  ( 5514): setting up 'default' as default (vendor) store
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b103438 : 0(0 size) total buffers - 0(0 size) used buffers - 23/33 (recycle/alloc) - 16/28 (fetch/transfer)
D/BufferPoolAccessor2.0( 5514): Destruction - bufferpool2 0xb40000748b103438 cached: 0/0M, 0/0% in use; allocs: 33, 70% recycled; transfers: 28, 43% unfetched
I/CCodec  ( 5514): Created component [c2.android.aac.decoder]
D/CCodecConfig( 5514): read media type: audio/mp4a-latm
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: output.buffers.pool-ids.values
D/ReflectedParamUpdater( 5514): extent() != 1 for single value type: algo.buffers.pool-ids.values
I/CCodecConfig( 5514): query failed after returning 21 values (BAD_INDEX)
D/CCodecConfig( 5514): c2 config diff is Dict {
D/CCodecConfig( 5514):   c2::u32 coded.aac-packaging.value = 0
D/CCodecConfig( 5514):   c2::u32 coded.bitrate.value = 64000
D/CCodecConfig( 5514):   c2::u32 coded.pl.level = 0
D/CCodecConfig( 5514):   c2::u32 coded.pl.profile = 8192
D/CCodecConfig( 5514):   c2::i32 coding.drc.album-mode.value = 0
D/CCodecConfig( 5514):   c2::float coding.drc.attenuation-factor.value = 1
D/CCodecConfig( 5514):   c2::float coding.drc.boost-factor.value = 1
D/CCodecConfig( 5514):   c2::i32 coding.drc.compression-mode.value = 3
D/CCodecConfig( 5514):   c2::i32 coding.drc.effect-type.value = 3
D/CCodecConfig( 5514):   c2::float coding.drc.encoded-level.value = 0.25
D/CCodecConfig( 5514):   c2::float coding.drc.reference-level.value = -16
D/CCodecConfig( 5514):   c2::u32 input.buffers.max-size.value = 8192
D/CCodecConfig( 5514):   c2::u32 input.delay.value = 0
D/CCodecConfig( 5514):   string input.media-type.value = "audio/mp4a-latm"
D/CCodecConfig( 5514):   c2::u32 output.delay.value = 2
D/CCodecConfig( 5514):   c2::float output.drc.output-loudness.value = 0.25
D/CCodecConfig( 5514):   c2::u32 output.large-frame.max-size = 0
D/CCodecConfig( 5514):   c2::u32 output.large-frame.threshold-size = 0
D/CCodecConfig( 5514):   string output.media-type.value = "audio/raw"
D/CCodecConfig( 5514):   c2::u32 raw.channel-count.value = 1
D/CCodecConfig( 5514):   c2::u32 raw.channel-mask.value = 0
D/CCodecConfig( 5514):   c2::u32 raw.max-channel-count.value = 8
D/CCodecConfig( 5514):   c2::u32 raw.sample-rate.value = 44100
D/CCodecConfig( 5514): }
I/MediaCodec( 5514): MediaCodec will operate in async mode
D/CCodec  ( 5514): [c2.android.aac.decoder] buffers are bound to CCodec for this session
D/CCodecConfig( 5514): no c2 equivalents for log-session-id
D/CCodecConfig( 5514): no c2 equivalents for importance
D/CCodecConfig( 5514): no c2 equivalents for flags
D/CCodecConfig( 5514): config failed => CORRUPTED
D/CCodecConfig( 5514): c2 config diff is   c2::u32 raw.channel-count.value = 2
W/Codec2Client( 5514): query -- param skipped: index = 1107298332.
D/CCodec  ( 5514): client requested max input size 635, which is smaller than what component recommended (8192); overriding with component recommendation.
W/CCodec  ( 5514): This behavior is subject to change. It is recommended that app developers double check whether the requested max input size is in reasonable range.
D/CCodec  ( 5514): encoding statistics level = 0
D/CCodec  ( 5514): setup formats input: AMessage(what = 0x00000000) = {
D/CCodec  ( 5514):   int32_t aac-drc-album-mode = 0
D/CCodec  ( 5514):   int32_t aac-drc-boost-level = 127
D/CCodec  ( 5514):   int32_t aac-drc-cut-level = 127
D/CCodec  ( 5514):   int32_t aac-drc-effect-type = 3
D/CCodec  ( 5514):   int32_t aac-encoded-target-level = -1
D/CCodec  ( 5514):   int32_t aac-max-output-channel_count = 8
D/CCodec  ( 5514):   int32_t aac-target-ref-level = 64
D/CCodec  ( 5514):   int32_t bitrate = 64000
D/CCodec  ( 5514):   int32_t channel-count = 2
D/CCodec  ( 5514):   int32_t channel-mask = 0
D/CCodec  ( 5514):   int32_t level = 0
D/CCodec  ( 5514):   int32_t max-input-size = 8192
D/CCodec  ( 5514):   int32_t max-output-channel-count = 8
D/CCodec  ( 5514):   string mime = "audio/mp4a-latm"
D/CCodec  ( 5514):   int32_t profile = 2
D/CCodec  ( 5514):   int32_t sample-rate = 44100
D/CCodec  ( 5514): }
D/CCodec  ( 5514): setup formats output: AMessage(what = 0x00000000) = {
D/CCodec  ( 5514):   int32_t aac-drc-album-mode = 0
D/CCodec  ( 5514):   int32_t aac-drc-boost-level = 127
D/CCodec  ( 5514):   int32_t aac-drc-cut-level = 127
D/CCodec  ( 5514):   int32_t aac-drc-effect-type = 3
D/CCodec  ( 5514):   int32_t aac-drc-output-loudness = -1
D/CCodec  ( 5514):   int32_t aac-encoded-target-level = -1
D/CCodec  ( 5514):   int32_t aac-max-output-channel_count = 8
D/CCodec  ( 5514):   int32_t aac-target-ref-level = 64
D/CCodec  ( 5514):   int32_t buffer-batch-max-output-size = 0
D/CCodec  ( 5514):   int32_t buffer-batch-threshold-output-size = 0
D/CCodec  ( 5514):   int32_t channel-count = 2
D/CCodec  ( 5514):   int32_t channel-mask = 0
D/CCodec  ( 5514):   int32_t max-output-channel-count = 8
D/CCodec  ( 5514):   string mime = "audio/raw"
D/CCodec  ( 5514):   int32_t sample-rate = 44100
D/CCodec  ( 5514):   int32_t android._config-pcm-encoding = 2
D/CCodec  ( 5514): }
I/CCodecConfig( 5514): query failed after returning 21 values (BAD_INDEX)
E/xample.ima_test( 5514): Failed to query component interface for required system resources: 6
D/MediaCodec( 5514): keep callback message for reclaim
W/Codec2Client( 5514): query -- param skipped: index = 1342179345.
W/Codec2Client( 5514): query -- param skipped: index = 2415921170.
W/Codec2Client( 5514): query -- param skipped: index = 1610614798.
D/CCodecBufferChannel( 5514): [c2.android.aac.decoder#785] Created input block pool with allocatorID 16 => poolID 42 - OK (0)
I/CCodecBufferChannel( 5514): [c2.android.aac.decoder#785] Created output block pool with allocatorID 16 => poolID 94 - OK
D/CCodecBufferChannel( 5514): [c2.android.aac.decoder#785] Configured output block pool ids 94 => OK
D/CCodecConfig( 5514): c2 config diff is   c2::u32 raw.crop.height = 480
D/CCodecConfig( 5514):   c2::u32 raw.crop.left = 0
D/CCodecConfig( 5514):   c2::u32 raw.crop.top = 0
D/CCodecConfig( 5514):   c2::u32 raw.crop.width = 854
D/CCodecConfig( 5514): c2 config diff is   c2::u32 raw.channel-mask.value = 12
D/CCodecBuffers( 5514): [c2.android.aac.decoder#785:Output[N]] popFromStashAndRegister: at 1000000000000us, output format changed to AMessage(what = 0x00000000) = {
D/CCodecBuffers( 5514):   int32_t aac-drc-album-mode = 0
D/CCodecBuffers( 5514):   int32_t aac-drc-boost-level = 127
D/CCodecBuffers( 5514):   int32_t aac-drc-cut-level = 127
D/CCodecBuffers( 5514):   int32_t aac-drc-effect-type = 3
D/CCodecBuffers( 5514):   int32_t aac-drc-output-loudness = -1
D/CCodecBuffers( 5514):   int32_t aac-encoded-target-level = -1
D/CCodecBuffers( 5514):   int32_t aac-max-output-channel_count = 8
D/CCodecBuffers( 5514):   int32_t aac-target-ref-level = 64
D/CCodecBuffers( 5514):   int32_t buffer-batch-max-output-size = 0
D/CCodecBuffers( 5514):   int32_t buffer-batch-threshold-output-size = 0
D/CCodecBuffers( 5514):   int32_t channel-count = 2
D/CCodecBuffers( 5514):   int32_t channel-mask = 12
D/CCodecBuffers( 5514):   int32_t max-output-channel-count = 8
D/CCodecBuffers( 5514):   string mime = "audio/raw"
D/CCodecBuffers( 5514):   int32_t sample-rate = 44100
D/CCodecBuffers( 5514):   int32_t android._config-pcm-encoding = 2
D/CCodecBuffers( 5514): }
I/PlatformViewsController( 5514): Using hybrid composition for platform view: 1
D/GASS    ( 5514): Clearcut logging disabled
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzh; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzn; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzn; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzn; annotation class 9507
W/xample.ima_test( 5514): Unable to resolve Lcom/google/ads/interactivemedia/v3/impl/data/zzn; annotation class 9507
I/flutter ( 5514): OnAdEvent: AdEventType.loaded => {}
I/flutter ( 5514): OnAdEvent: AdEventType.contentPauseRequested => {}
W/HWUI    ( 5514): Image decoding logging dropped!
W/HWUI    ( 5514): Image decoding logging dropped!
W/MediaPlayer( 5514): Error setting data source via ContentResolver
W/MediaPlayer( 5514): java.io.FileNotFoundException: No content provider: https://redirector.gvt1.com/videoplayback/id/f1be9c477e89fd68/aitags/18,22,106,109/itag/106/source/dclk_video_ads/requiressl/yes/xpc/EgVovf3BOg%3D%3D/acao/yes/ctier/L/ip/0.0.0.0/ipbits/0/expire/1787343367/sparams/ip,ipbits,expire,id,aitags,source,requiressl,xpc,acao,ctier/signature/709B127EC86FF8A571C69E3D1C400C9F9882A96C.969EF18D05354E2FA9A48990320921580A8412F7/key/ck2/cpn/xI1Lsd1njou4lNii/file/file.mp4
W/MediaPlayer( 5514): 	at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2031)
W/MediaPlayer( 5514): 	at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1860)
W/MediaPlayer( 5514): 	at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1775)
W/MediaPlayer( 5514): 	at android.media.MediaPlayer.attemptDataSource(MediaPlayer.java:1156)
W/MediaPlayer( 5514): 	at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1122)
W/MediaPlayer( 5514): 	at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1146)
W/MediaPlayer( 5514): 	at android.widget.VideoView.openVideo(VideoView.java:412)
W/MediaPlayer( 5514): 	at android.widget.VideoView.setVideoURI(VideoView.java:287)
W/MediaPlayer( 5514): 	at android.widget.VideoView.setVideoURI(VideoView.java:270)
W/MediaPlayer( 5514): 	at dev.flutter.packages.interactive_media_ads.VideoViewProxyApi.setVideoUri(VideoViewProxyApi.kt:32)
W/MediaPlayer( 5514): 	at dev.flutter.packages.interactive_media_ads.PigeonApiVideoView$Companion.setUpMessageHandlers$lambda$3$lambda$2(InteractiveMediaAdsLibrary.g.kt:3753)
W/MediaPlayer( 5514): 	at dev.flutter.packages.interactive_media_ads.PigeonApiVideoView$Companion.$r8$lambda$ikQslQ5XstK-qZw1Q8NB4yOwwZI(Unknown Source:0)
W/MediaPlayer( 5514): 	at dev.flutter.packages.interactive_media_ads.PigeonApiVideoView$Companion$$ExternalSyntheticLambda1.onMessage(D8$$SyntheticClass:0)
W/MediaPlayer( 5514): 	at io.flutter.plugin.common.BasicMessageChannel$IncomingMessageHandler.onMessage(BasicMessageChannel.java:261)
W/MediaPlayer( 5514): 	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
W/MediaPlayer( 5514): 	at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
W/MediaPlayer( 5514): 	at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
W/MediaPlayer( 5514): 	at android.os.Handler.handleCallback(Handler.java:995)
W/MediaPlayer( 5514): 	at android.os.Handler.dispatchMessage(Handler.java:103)
W/MediaPlayer( 5514): 	at android.os.Looper.loopOnce(Looper.java:248)
W/MediaPlayer( 5514): 	at android.os.Looper.loop(Looper.java:338)
W/MediaPlayer( 5514): 	at android.app.ActivityThread.main(ActivityThread.java:8982)
W/MediaPlayer( 5514): 	at java.lang.reflect.Method.invoke(Native Method)
W/MediaPlayer( 5514): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
W/MediaPlayer( 5514): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
V/MediaHTTPService( 5514): MediaHTTPService(android.media.MediaHTTPService@7385221): Cookies: null
V/MediaHTTPService( 5514): makeHTTPConnection: CookieHandler (java.net.CookieManager@8bc9968) exists.
V/MediaHTTPService( 5514): makeHTTPConnection(android.media.MediaHTTPService@7385221): cookieHandler: java.net.CookieManager@8bc9968 Cookies: null
D/MediaPlayerNative( 5514): getMetadata
W/MediaPlayerNative( 5514): info/warning (3, 0)
I/flutter ( 5514): OnAdEvent: AdEventType.started => {}
I/flutter ( 5514): OnAdEvent: AdEventType.adProgress => {}
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b07c458 : 0(0 size) total buffers - 0(0 size) used buffers - 19/26 (recycle/alloc) - 8/25 (fetch/transfer)
D/BufferPoolAccessor2.0( 5514): evictor expired: 1, evicted: 1
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b0b5128 : 5(40960 size) total buffers - 4(32768 size) used buffers - 23/28 (recycle/alloc) - 14/25 (fetch/transfer)
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b111928 : 0(0 size) total buffers - 0(0 size) used buffers - 22/32 (recycle/alloc) - 13/27 (fetch/transfer)
D/BufferPoolAccessor2.0( 5514): evictor expired: 3, evicted: 1
D/BufferPoolAccessor2.0( 5514): bufferpool2 0xb40000748b0b0978 : 5(31457280 size) total buffers - 4(25165824 size) used buffers - 17/22 (recycle/alloc) - 7/22 (fetch/transfer)
D/BufferPoolAccessor2.0( 5514): evictor expired: 1, evicted: 1
D/BufferPoolAccessor2.0( 5514): evictor expired: 1, evicted: 1
iOS Logs
Debug service listening on ws://127.0.0.1:60303/YfcXv0uxKuQ=/ws
Syncing files to device iPhone 12...
flutter: OnAdEvent: AdEventType.loaded => {}
flutter: OnAdEvent: AdEventType.contentPauseRequested => {}
flutter: OnAdEvent: AdEventType.started => {}
flutter: OnAdEvent: AdEventType.firstQuartile => {}
flutter: OnAdEvent: AdEventType.midpoint => {}
flutter: OnAdEvent: AdEventType.thirdQuartile => {}
flutter: OnAdEvent: AdEventType.complete => {}
flutter: OnAdEvent: AdEventType.loaded => {}
flutter: OnAdEvent: AdEventType.started => {}
flutter: OnAdEvent: AdEventType.firstQuartile => {}
flutter: OnAdEvent: AdEventType.midpoint => {}
flutter: OnAdEvent: AdEventType.thirdQuartile => {}
flutter: OnAdEvent: AdEventType.complete => {}
flutter: OnAdEvent: AdEventType.contentResumeRequested => {}
flutter: OnAdEvent: AdEventType.allAdsCompleted => {}

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.35.1, on macOS 15.6 24G84 darwin-arm64, locale en-RS) [344ms]
    • Flutter version 3.35.1 on channel stable at /Users/devmode/fvm/versions/3.35.1
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 20f8274939 (7 days ago), 2025-08-14 10:53:09 -0700
    • Engine revision 1e9a811bf8
    • Dart version 3.9.0
    • DevTools version 2.48.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-lldb-debugging

[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0-rc1) [3.6s]
    • Android SDK at /Users/devmode/Library/Android/sdk
    • Emulator version 35.4.9.0 (build_id 13025442) (CL:N/A)
    • Platform android-36, build-tools 36.0.0-rc1
    • ANDROID_HOME = /Users/devmode/Library/Android/sdk
    • Java binary at: /Library/Java/JavaVirtualMachines/jdk-17.0.3.1.jdk/Contents/Home/bin/java
      This JDK is specified in your Flutter configuration.
      To change the current JDK, run: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version Java(TM) SE Runtime Environment (build 17.0.3.1+2-LTS-6)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.2) [992ms]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16C5032a
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [9ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2025.1) [9ms]
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.6+-13391695-b895.109)

[✓] VS Code (version 1.102.3) [8ms]
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.116.0

[✓] Connected device (5 available) [6.1s]
    • sdk gphone64 arm64 (mobile)     • emulator-5554             • android-arm64  • Android 16 (API 36) (emulator)
    • sdk google atv64 arm64 (mobile) • emulator-5556             • android-arm64  • Android 14 (API 34) (emulator)
    • dawider (mobile)                • <redacted>                • ios            • iOS 18.6 22G86
    • macOS (desktop)                 • macos                     • darwin-arm64   • macOS 15.6 24G84 darwin-arm64
    • Chrome (web)                    • chrome                    • web-javascript • Google Chrome 139.0.7258.128

[✓] Network resources [661ms]
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions