Search Unity

NatCorder - Video Recording API

Discussion in 'Assets and Asset Store' started by Lanre, Nov 18, 2017.

  1. LeamSDev

    LeamSDev

    Joined:
    Nov 17, 2020
    Posts:
    7
    Hi,
    I'm seeing Unity Editor crashing 100% at FinishWriting() call, producing 0 bytes video. There's nothing from NatCorder in the logs, I've searched them through. Putting the FinishWriting() call into a try {} block and logging the exception didn't work either.
    My setup is rather unconventional (it did work before, when sample classes were used for input/clock), as I'm trying to achieve faster-than-realtime video rendering.

    I'm running a task in the main task pool (read, on the main thread, so it can manipulate monobehaviour objects) that sleeps for [timestep] milliseconds and calls a custom camera input to commit frames, all that in a loop until a cancellation token is fired. Thus, the task advances time, calls all time-dependant objects to update accordingly, and tells the camera input to obtain and submit the frame.

    Code (CSharp):
    1. public class ScaledGameTimeClock : NatSuite.Recorders.Clocks.IClock
    2. {
    3.     public long timestamp => System.TimeSpan.FromMilliseconds(TimestepController.Timestamp).Ticks * 100L;
    4. }
    Camera Input code is only different from the original in that OnFrame is not a coroutine anymore:

    Code (CSharp):
    1. using UnityEngine;
    2. using UnityEngine.Rendering;
    3. using System;
    4. using System.Collections;
    5. using NatSuite.Recorders;
    6. using NatSuite.Recorders.Clocks;
    7.  
    8. /// <summary>
    9. /// Recorder input for recording video frames from one or more game cameras.
    10. /// </summary>
    11. public class ControlledCameraInput : IDisposable
    12. {
    13.     #region --Client API--
    14.     /// <summary>
    15.     /// Control number of successive camera frames to skip while recording.
    16.     /// This is very useful for GIF recording, which typically has a lower framerate appearance.
    17.     /// </summary>
    18.     public int frameSkip;
    19.  
    20.     /// <summary>
    21.     /// Create a video recording input from a game camera.
    22.     /// </summary>
    23.     /// <param name="recorder">Media recorder to receive committed frames.</param>
    24.     /// <param name="clock">Clock for generating timestamps.</param>
    25.     /// <param name="cameras">Game cameras to record.</param>
    26.     public ControlledCameraInput(IMediaRecorder recorder, IClock clock, params Camera[] cameras)
    27.     {
    28.         // Sort cameras by depth
    29.         Array.Sort(cameras, (a, b) => (int)(10 * (a.depth - b.depth)));
    30.         var (width, height) = recorder.frameSize;
    31.         // Save state
    32.         this.recorder = recorder;
    33.         this.clock = clock;
    34.         this.cameras = cameras;
    35.         this.frameDescriptor = new RenderTextureDescriptor(width, height, RenderTextureFormat.ARGB32, 24);
    36.         this.readbackBuffer = SystemInfo.supportsAsyncGPUReadback ? null : new Texture2D(width, height, TextureFormat.RGBA32, false, false);
    37.         this.attachment = cameras[0].gameObject.AddComponent<CameraInputAttachment>();
    38.         this.pixelBuffer = new byte[width * height * 4];
    39.         // Start recording
    40.         frameDescriptor.sRGB = true;
    41.     }
    42.  
    43.     /// <summary>
    44.     /// Stop recorder input and release resources.
    45.     /// </summary>
    46.     public void Dispose()
    47.     {
    48.         CameraInputAttachment.Destroy(attachment);
    49.         Texture2D.Destroy(readbackBuffer);
    50.         pixelBuffer = null;
    51.     }
    52.     #endregion
    53.  
    54.  
    55.     #region --Operations--
    56.  
    57.     private readonly IMediaRecorder recorder;
    58.     private readonly IClock clock;
    59.     private readonly Camera[] cameras;
    60.     private readonly RenderTextureDescriptor frameDescriptor;
    61.     private readonly Texture2D readbackBuffer;
    62.     private readonly CameraInputAttachment attachment;
    63.     private byte[] pixelBuffer;
    64.     private int frameCount;
    65.  
    66.     public void OnFrame()
    67.     {
    68.         if (frameCount++ % (frameSkip + 1) != 0)
    69.             return;
    70.  
    71.         // Render every camera
    72.         var frameBuffer = RenderTexture.GetTemporary(frameDescriptor);
    73.         for (var i = 0; i < cameras.Length; i++)
    74.         {
    75.             var prevTarget = cameras[i].targetTexture;
    76.             cameras[i].targetTexture = frameBuffer;
    77.             cameras[i].Render();
    78.             cameras[i].targetTexture = prevTarget;
    79.         }
    80.         // Readback and commit
    81.         var timestamp = clock.timestamp;
    82.         if (SystemInfo.supportsAsyncGPUReadback)
    83.             AsyncGPUReadback.Request(frameBuffer, 0, request =>
    84.             {
    85.                 if (pixelBuffer != null)
    86.                 {
    87.                     request.GetData<byte>().CopyTo(pixelBuffer);
    88.                     recorder.CommitFrame(pixelBuffer, timestamp);
    89.                 }
    90.             });
    91.         else
    92.         {
    93.             var prevActive = RenderTexture.active;
    94.             RenderTexture.active = frameBuffer;
    95.             readbackBuffer.ReadPixels(new Rect(0, 0, frameBuffer.width, frameBuffer.height), 0, 0, false);
    96.             readbackBuffer.GetRawTextureData<byte>().CopyTo(pixelBuffer);
    97.             recorder.CommitFrame(pixelBuffer, timestamp);
    98.             RenderTexture.active = prevActive;
    99.         }
    100.         RenderTexture.ReleaseTemporary(frameBuffer);
    101.     }
    102.  
    103.     private sealed class CameraInputAttachment : MonoBehaviour { }
    104.     #endregion
    105. }

    I've triple checked that...
    - camera input is disposed before FinishWriting()
    - frame size is healthy, 1920x1080
    - there's no attempt to submit more frame data after disposing the input and invoking FinishWriting()
    - the camera is fine (renders to an RT, though, not like it matters right now)
    - timestep begins at 0, is monotonic, and equals to what I expect it be equal in the end
    - OnFrame calls come through fine, 335 frames are submitted in total

    I'd love to be more informative, but there's really nothing from the plugin in the editor log file.
    Thank you in advance
     
  2. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Having a resulting video file that is 0 bytes would imply that no frames are actually being committed. No matter how the recording ends (successfully, error, or hard crash), the media file should have some data in it (encoders can't keep the data in memory, as that would blow up).
    The try-catch won't catch any native exceptions. If you have a hard crash, that usually implies an access violation.
    Can you share your full recording code?
    This doesn't sound like it's doing what you think. It's practically impossible to get Unity to do anything more frequently than its refresh rate. The only way to hack this is to manually sleep and advance all within the main thread. This would halt the rest of your app though.
    You'll have to check on the semantics of the CancellationToken, because as far as I know the task isn't guaranteed to stop immediately the cancellation token is signaled. But when finishing writing on the recorder, you absolutely must guarantee that nothing has any chance to call any method on the recorder the moment `FinishWriting` is called.
     
  3. LeamSDev

    LeamSDev

    Joined:
    Nov 17, 2020
    Posts:
    7
    Thank you for the surprisingly quick reply!

    You clearly know better, but I'm sure I've seen this before, using the out-of-the-box code, in case if execution was interrupted. CommitFrame is most certainly called, and does contain data, which I was able to verify by saving frames into RTs along with committing them to the recorder: by the time of FinishWriting(), the RTs contained what I expected them to.

    It's rather broadly distributed over several places, let me combine it into something short and readable. You'd need to see only what's directly interacting with mp4recorder and camera input, or timestep management too?

    That's effectively what I do, I believe. The only purpose of the application is to spit out a video, so it's fine that it spends most of its runtime hanged. Besides, all I need to advance time for are timeline director and animators, which are perfectly open to manual time control.

    You're right, and I did take steps to guarantee that the camera input is disposed immediately when the task is cancelled, no custom updates are done, and literally the only thing happening with any of NatCorder-related objects is FinishWriting().
     
  4. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    I'd like to see how you start and stop recording, along with your rendering loop (as far as the recorder is concerned), and sure timestamp management might be useful. I'd like to see how you manage your task, as that could be the cause.

    I recommend trying to isolate this to NatCorder. So since you don't care about the engine being paused while you record, simply set up a `while` loop for recording (you shouldn't need any of the task infrastructure if I understand correctly). Also, you'll want to hack your camera input implementation to disable asynchronous GPU readbacks, so you can guarantee that a frame would have been sent to the recorder when the `OnFrame` method returns (with async readbacks, this guarantee doesn't exist).
     
  5. olas72

    olas72

    Joined:
    Jul 9, 2012
    Posts:
    15
    Is there a way to change the name the video files get recorded as?
     
  6. LeamSDev

    LeamSDev

    Joined:
    Nov 17, 2020
    Posts:
    7
    Ah, I should've figured myself. I added WaitForCompletion() and no crash occurs now.

    But it seems that you were rightly skeptical about my approach, the video I get contains only the last frame from the camera, copied over the entire duration.

    In case you're willing to share more of your thoughts, here's what controls timestep (a hastily shrunk version, so may have missed something):

    Code (CSharp):
    1. using System.Linq;
    2. using System.Collections;
    3. using System.Collections.Generic;
    4. using UnityEngine;
    5. using System.Threading;
    6. using System.Threading.Tasks;
    7.  
    8. public class TimestepController
    9. {
    10.     private int m_timeStep = 1000 / 30;
    11.     private float m_scale = 1f;
    12.  
    13.     private bool m_running = false;
    14.  
    15.     private TaskScheduler m_scheduler = null;
    16.     private Task m_task;
    17.     CancellationTokenSource m_cancellation;
    18.  
    19.     private LinkedList<IUpdatable> m_updatables = new LinkedList<IUpdatable>();
    20.  
    21.     public static long Timestamp { get; private set; }
    22.     public static float Time { get => Timestamp / 1000f; }
    23.  
    24.     public TimestepController(float fps, float scale)
    25.     {
    26.         m_timeStep = Mathf.RoundToInt(1000 / fps);
    27.         m_scale = scale;
    28.  
    29.         m_scheduler = TaskScheduler.FromCurrentSynchronizationContext();
    30.         m_cancellation = new CancellationTokenSource();
    31.         m_task = new Task(Update, m_cancellation.Token);
    32.     }
    33.  
    34.     public void StartSession()
    35.     {
    36.         UnityEngine.Time.timeScale = m_scale;
    37.         if (m_running)
    38.             return;
    39.  
    40.         m_running = true;
    41.  
    42.         m_task.Start(m_scheduler);
    43.     }
    44.  
    45.     public void PauseSession(bool pause)
    46.     {
    47.         m_running = !pause;
    48.     }
    49.  
    50.     public void FinishSession()
    51.     {
    52.         m_running = false;
    53.         m_cancellation.Cancel();
    54.     }
    55.  
    56.     private void Update()
    57.     {
    58.         var step = Mathf.RoundToInt(m_timeStep / m_scale);
    59.         int f = 0;
    60.  
    61.         while (true)
    62.         {
    63.             try
    64.             {
    65.                 if (m_cancellation.IsCancellationRequested)
    66.                     m_cancellation.Token.ThrowIfCancellationRequested();
    67.  
    68.                 if (m_running)
    69.                     DoUpdate();
    70.  
    71.                 Task.Run(async delegate
    72.                 {
    73.                     await Task.Delay(step);
    74.                 }).Wait();
    75.  
    76.                 if (m_running)
    77.                     Timestamp += m_timeStep;
    78.             }
    79.             catch (System.OperationCanceledException)
    80.             {
    81.                 Debug.Log("Timestep Controller task cancelled");
    82.                 break;
    83.             }
    84.             catch (System.Exception e)
    85.             {
    86.                 Debug.LogError(e.Message);
    87.                 break;
    88.             }
    89.             finally
    90.             {
    91.  
    92.             }
    93.         }
    94.     }
    95.  
    96.     private void DoUpdate()
    97.     {
    98.         foreach (var obj in m_updatables)
    99.             obj.OnFrame();
    100.     }
    101. }
    The following is what runs the recording; again, I kept only what may be relevant, so it's probably full of missing bits. Custom camera input and clock are in my previous message.

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using NatSuite.Recorders;
    5. using NatSuite.Recorders.Clocks;
    6. using NatSuite.Recorders.Inputs;
    7. using System.IO;
    8.  
    9. /// <summary>
    10. /// Handles video recording across scenes/sequences
    11. /// </summary>
    12. public class RecordingController : MonoBehaviour, IUpdatable
    13. {
    14.     private MP4Recorder m_recorder = null;
    15.  
    16.     private ControlledCameraInput m_cameraInput = null;
    17.     private AudioInput m_audioInput = null;
    18.  
    19.     private UnityEngine.Playables.PlayableDirector m_director = null;
    20.  
    21.     private bool m_finished = false;
    22.  
    23.     private IClock m_clock = null;
    24.  
    25.     public FileInfo Output { get; private set; }
    26.  
    27.     /// <summary>
    28.     /// Begin new video recording
    29.     /// </summary>
    30.     /// <param name="settings">Settings to pass to MP4 Recorder</param>
    31.     public void StartSession(RecorderSettings settings)
    32.     {
    33.         m_recorder = new MP4Recorder(settings.Width, settings.Height, settings.Framerate);
    34.         //m_recorder = new MP4Recorder(settings.Width, settings.Height, settings.Framerate, settings.AudioSampleRate, settings.AudioChannelCount);
    35.  
    36.         m_clock = new ScaledGameTimeClock();
    37.         //m_clock = new RealtimeClock();
    38.  
    39.         m_finished = false;
    40.  
    41.         Output = null;
    42.     }
    43.  
    44.     /// <summary>
    45.     /// Record a single Cinemachine camera sequence
    46.     /// </summary>
    47.     public IEnumerator RecordSequence(Sequence sequence)
    48.     {
    49.         m_cameraInput = new ControlledCameraInput(m_recorder, m_clock, sequence.Camera);
    50.  
    51.         var listener = sequence.Camera.GetComponent<AudioListener>();
    52.         //m_audioInput = new AudioInput(m_recorder, m_clock, listener);
    53.  
    54.         m_director = sequence.PlayableDirector;
    55.         m_director.timeUpdateMode = UnityEngine.Playables.DirectorUpdateMode.Manual;
    56.         m_director.Play();
    57.  
    58.         while (m_director.time < m_director.duration)
    59.             yield return null;
    60.  
    61.         //m_audioInput.Dispose();
    62.         m_cameraInput.Dispose();
    63.  
    64.         m_audioInput = null;
    65.         m_cameraInput = null;
    66.     }
    67.  
    68.     public void OnFrame()
    69.     {
    70.         if (m_cameraInput == null)
    71.             return;
    72.  
    73.         m_director.time = TimestepController.Time;
    74.         m_director.Evaluate();
    75.  
    76.         m_cameraInput.OnFrame();
    77.  
    78.         if (m_director.time >= m_director.duration)
    79.             TimestepController.m_instance.FinishSession();
    80.     }
    81.  
    82.     public IEnumerator FinishSession()
    83.     {
    84.         FlushRecording();
    85.  
    86.         while (!m_finished)
    87.             yield return null;
    88.     }
    89.  
    90.     private async void FlushRecording()
    91.     {
    92.         try
    93.         {        
    94.             var path = await m_recorder.FinishWriting();
    95.             MoveRecording(path);
    96.         }
    97.         catch (System.Exception e)
    98.         {
    99.             Debug.LogError(e);
    100.         }
    101.  
    102.         m_finished = true;
    103.     }
    104. }
     
  7. aholla

    aholla

    Joined:
    May 27, 2014
    Posts:
    81
    Hi, im getting some reports from Android users with Huawai Phones (P20 and P30) that the app crashes as soon as they hit the record button.

    I dont have any logs yet but do you have any ideas why this might be happening and anything I can do?

    Currently this is for recording AR so I am using ES3 as the default graphics api.
     
  8. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    You can't set the file name, and this is by design. Instead, you should rename the file using the System.IO API's.
     
  9. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    I recommend stripping all this down and creating a simple setup: create some script with a function that has a while loop. Call your CameraInput.OnFrame then use Thread.Sleep for your timestep delay. Finally, disable async GPU readbacks as they will likely blow up memory running in rapid-fire mode. Your timestep controller is needlessly complicated; you don't need TPL.
     
  10. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Chances are that when you create the recorder, some of the parameters are not supported. First, if you are using a HEVCRecorder, note that it is not guaranteed to be supported on all Android devices. Beyond that, make sure that your recording resolution does not have any odd numbers. Finally, some devices choke when you try to record with non-standard aspect ratios (like square).
     
    aholla likes this.
  11. aholla

    aholla

    Joined:
    May 27, 2014
    Posts:
    81
    Thanks for the tips, im currently using the MP4Recorder, out of interest, whats the difference between recorders?

    Im using the screen size for the screen recording so will look into this.
     
  12. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Never record at screen resolution. MP4 records with the H.264 AVC codec. HEVC records with the H.265 HEVC codec. If you're not familiar with these codecs, then always stick with the MP4Recorder.
     
    aholla likes this.
  13. aholla

    aholla

    Joined:
    May 27, 2014
    Posts:
    81
    Regarding never recording at screen size... I would like to record at a standard size but this would not match the screen size that I am trying to record.

    Is there a way to do a crop of the screen? At teh moment it will record my screen and distort it to fit in the desired video size.
     
  14. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    If you are recording with a CameraInput, Unity will automatically 'rescale' the camera view so that you get no stretching. Imagine it as rendering to a different-sized display.
    You'd have to increment cropping yourself, this is not a feature provided. If you are seeing stretching, you are likely recording in an AR app? If so, then you will have to aspect-scale your recording resolution, but make sure that the resulting resolution you get does not have an odd number.
     
  15. aholla

    aholla

    Joined:
    May 27, 2014
    Posts:
    81
    But if I am using a device with a superwide aspect ratio, and want to record in a standard video ratio, then the video wither will be stretched/squashed or it would have to be cropped.

    Am I missing something here? There is no way to use the recorder to recorder a 1280x720 video is the device as a different aspect ratio without it being squashed or writing a custom shader. Is that correct?
     
  16. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    No, this is not the case. The way that resizing the game view in the Editor doesn't create a view that is squashed is the same way a CameraInput can render at a different screen size and not be squashed. When rendering a game camera to a target texture, Unity will automatically the camera view to prevent any stretching or squeezing. This is how the CameraInput script works (you can look at the sources for yourself).
     
  17. LeamSDev

    LeamSDev

    Joined:
    Nov 17, 2020
    Posts:
    7
    Thanks, I did all that, starting from a clean sheet. Same result - all I get in the video is the last frame from the camera lasting for the whole video duration.

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using NatSuite.Recorders;
    4. using NatSuite.Recorders.Clocks;
    5. using NatSuite.Recorders.Inputs;
    6. using System.Threading;
    7. using UnityEngine;
    8. using System.IO;
    9.  
    10. public class SingleThreadCtrl : MonoBehaviour
    11. {
    12.     public Sequence sequence;
    13.  
    14.     private MP4Recorder m_recorder = null;
    15.     private ControlledCameraInput m_cameraInput = null;
    16.     private IClock m_clock = null;
    17.  
    18.     private UnityEngine.Playables.PlayableDirector m_director = null;
    19.  
    20.     public static long Timestamp { get; private set; }
    21.     public static float Time { get => Timestamp / 1000f; }
    22.  
    23.     private int m_timeStep = Mathf.RoundToInt(1000 / 30);
    24.     private float m_scale = 1f;
    25.  
    26.     IEnumerator Start()
    27.     {
    28.         yield return null;
    29.  
    30.         sequence = Instantiate(sequence);
    31.  
    32.         m_recorder = new MP4Recorder(1920, 1080, 30);
    33.         m_clock = new ScaledGameTimeClock();
    34.         m_cameraInput = new ControlledCameraInput(m_recorder, m_clock, sequence.Camera);
    35.  
    36.         Run();
    37.     }
    38.  
    39.     private void Run()
    40.     {
    41.         m_director = sequence.PlayableDirector;
    42.         m_director.timeUpdateMode = UnityEngine.Playables.DirectorUpdateMode.Manual;
    43.         m_director.Play();
    44.  
    45.         UnityEngine.Time.timeScale = m_scale;
    46.  
    47.         var step = Mathf.RoundToInt(m_timeStep / m_scale);
    48.  
    49.         var run = true;
    50.         var sw = new System.Diagnostics.Stopwatch();
    51.         sw.Start();
    52.         while (run)
    53.         {
    54.             OnFrame();
    55.  
    56.             Thread.Sleep(step);
    57.  
    58.             Timestamp += m_timeStep;
    59.  
    60.             if (sw.Elapsed.TotalSeconds > 12)
    61.                 run = false;
    62.         }
    63.  
    64.         m_cameraInput.Dispose();
    65.  
    66.         FlushRecording();
    67.     }
    68.  
    69.     public void OnFrame()
    70.     {
    71.         m_director.time = Time;
    72.         m_director.Evaluate();
    73.  
    74.         m_cameraInput.OnFrame();
    75.     }
    76.  
    77.     private async void FlushRecording()
    78.     {
    79.         var path = await m_recorder.FinishWriting();
    80.  
    81.         MoveRecording(path);
    82.     }
    83.  
    84.     private void MoveRecording(string path)
    85.     {
    86.         Debug.Log("Exported to: " + path);
    87.         var file = new FileInfo(path);
    88. #if UNITY_EDITOR
    89.         var exportPath = Application.dataPath + "/../Exported/";
    90.         if (!Directory.Exists(exportPath))
    91.             Directory.CreateDirectory(exportPath);
    92.  
    93.         file.MoveTo(exportPath + file.Name);
    94. #elif UNITY_STANDALONE_OSX
    95.         file.MoveTo(Application.dataPath + "/../../" + file.Name);
    96. #else
    97.         file.MoveTo(Application.dataPath + "/../" + file.Name);
    98. #endif
    99.         Debug.Log("Moved to: " + file.FullName);
    100.     }
    101. }
    102.  
    Camera input is the same as in NatCorder package, just without the async readback bit. Also tried having the camera render into an RT and taking it directly from there in camera input, since I don't care for the screen output anyway - no luck either.

    Any further advice would be lovely.
     

    Attached Files:

  18. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Swap out the MP4Recorder for a JPGRecorder. If the images in the recorded image sequence are all the same, then it means that your rendering setup with a manually-advanced timestep doesn't work with Unity's rendering system. Maybe Camera.Render wouldn't work in such quick succession.
     
  19. LeamSDev

    LeamSDev

    Joined:
    Nov 17, 2020
    Posts:
    7
    JPGs are the same, yes.
    I know you've said it many times before, that faster that realtime recording is not achievable and that it's not even a NatCorder restriction. What made me believe that I might succeed anyway, was that I don't care for input/game time/screen output/etc, and can sacrifice anything if I can get a scene rendered into an mp4 as fast as possible. Can you suggest anything else to try?
     
  20. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    I recommend running this by a Unity engineer familiar with the rendering system. This gets out of my own knowledge. Perhaps you can hack Unity's player loop to achieve what you want, but I'm really unfamiliar with it.
     
  21. LeamSDev

    LeamSDev

    Joined:
    Nov 17, 2020
    Posts:
    7
    Many thanks for your time and support, and for the plugin!
     
    Lanre likes this.
  22. aholla

    aholla

    Joined:
    May 27, 2014
    Posts:
    81
    hi Ive run into an issue that is related to Nat "Share" but alos to NatCorder. I had to remove the "core.arr" files because it conflicted with other libraries that require Google Services.

    However now, not share throws and erros when saving:
    Code (CSharp):
    1. Caused by java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/video/media from pid=4043, uid=10297 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
    2. at android.os.Parcel.createException(Parcel.java:1966) at
    3. android.os.Parcel.readException(Parcel.java:1934) at
    4. android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183) at
    5. android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) at
    6. android.content.ContentProviderProxy.insert(ContentProviderNative.java:476) at
    7. android.content.ContentResolver.insert(ContentResolver.java:1594) at
    8. api.natsuite.natshare.SavePayload.lambda$commit$0$SavePayload(SavePayload.java:90) at
    9. api.natsuite.natshare.-$$Lambda$SavePayload$H4OYe3fihIsshoXxoPnTnQILE5c.run(:6) at
    10. android.os.Handler.handleCallback(Handler.java:873) at
    11. android.os.Handler.dispatchMessage(Handler.java:99) at
    12. android.os.Looper.loop(Looper.java:214) at
    13. android.os.HandlerThread.run(HandlerThread.java:65)
    Is it something in the core that was used to ask the user for perrmissions that is now missing?
     
  23. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    This doesn't have anything to do with the core-rc library. I responded to your issue on GitHub; let's keep the conversation over there.
     
  24. Sashimiii

    Sashimiii

    Joined:
    Sep 26, 2017
    Posts:
    15
    Hii Lanre,

    I have a question regarding stopping the camera. This is how I start recording and stop recording:

    Code (CSharp):
    1. public void StartRecording()
    2.     {
    3.         int sampleRate = recordMicrophone ? _audioDevice.sampleRate : 0;
    4.         int channelCount = recordMicrophone ? _audioDevice.channelCount : 0;
    5.  
    6.         // Start recording.
    7.         IClock _clock = new RealtimeClock();
    8.  
    9.         _videoRecorder = new MP4Recorder(_cameraTexture.width, _cameraTexture.height, Config.videoFPS, sampleRate, channelCount);
    10.         _cameraInput = new CameraInput(_videoRecorder, _clock, Camera.main);
    11.  
    12.         _audioDevice.StartRunning((sampleBuffer, timestamp) => _videoRecorder.CommitSamples(sampleBuffer, _clock.timestamp));
    13.     }
    14.  
    15.     public async void StopRecording()
    16.     {
    17.         _cameraInput.Dispose();
    18.         _audioDevice.StopRunning();
    19.  
    20.         VideoPath = await _videoRecorder.FinishWriting();
    21.  
    22.         // Playback recording.
    23.         //RKLog.Log($"Saved recording to: {VideoPath}");
    24.  
    25.         // Adds texture and destination path of the recording to the Recorded Videos list.
    26.         Config.RECORDED_VIDEO_PATH = ChangeVideoPath(VideoPath);
    27.  
    28.         RecordVideo.Instance.Hide();
    29.         RecordVideo.Instance.HideAllUI();
    30.  
    31.         // Set next state.
    32.         GlobalController.StateManager.SetState(States.State.RECORDING_DONE);
    33.         SceneLoader.Instance.GetGameObject(States.State.RECORDING_DONE).GetComponent<RecordingDone>().Set(_isOnboardingVideo);
    34.  
    35.         if (_previousButton != null)
    36.             Destroy(_previousButton.gameObject);
    37.     }
    However, it seems like the camera is still in use, even if I dispose it. Do you have more information on this?

    Kind Regards,

    Jenny
     
  25. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Your recording code doesn't have anything regarding any camera. I'm not sure what camera you are referring to.
     
  26. Miguel1691

    Miguel1691

    Joined:
    Oct 24, 2019
    Posts:
    6
    I Have the same problem.
     
  27. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Are you using the latest version of NatCorder from the Asset Store? Can you share the full, unfiltered logs in a .txt attachment?
     
  28. Ikaro88

    Ikaro88

    Joined:
    Jun 6, 2016
    Posts:
    300
    Any news about that?

    I still have the problem :(
     
  29. cihad_unity

    cihad_unity

    Joined:
    Dec 27, 2019
    Posts:
    35
    Hi,
    I bought your asset and it works great!
    So, my issue is, I want to record audio but don't want it to be heard by the user. Eg record the video with a custom mp3 file from audiosource
    When I mute the audiosource and try to record it, video is muted too.
    How can I achieve this?
     
  30. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    I'm still working on the async readback implementation on Android. It will be a separate package that can then be integrated with NatCorder.
     
  31. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    The `AudioInput` constructor has a `mute` flag that does this. See how we use it in the ReplayCam example.
     
  32. cihad_unity

    cihad_unity

    Joined:
    Dec 27, 2019
    Posts:
    35
    Thanks, I'll look at it, it's low priority for now.
    I'd like to report a bug, this is a high priority to me. (This crashes Unity Editor as well as iOS app)
    This happens when I want to record game with audio second time. Looks like something is wrong with dealloc.
    https://gist.github.com/cihadturhan/967066303649f91a8431757f374cb191
     
  33. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    What do you mean when you want to record a second time? Can you share your code? After you call `FinishWriting` on a recorder, you must not make any further calls on the recorder, else you will end up with a hard crash.
     
  34. cihad_unity

    cihad_unity

    Joined:
    Dec 27, 2019
    Posts:
    35
    Yes, I've read that. I don't use the same recorder after I'm done with it.
    But I found the bug. A bug in my code sets framerate 0.
    If framerate is given 0 in MP4Recorder and it hard crashes.
     
    Lanre likes this.
  35. Miguel1691

    Miguel1691

    Joined:
    Oct 24, 2019
    Posts:
    6
    I would like to see NatCorder supporting Android.
     
  36. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    NatCorder supports Android.
     
  37. Sashimiii

    Sashimiii

    Joined:
    Sep 26, 2017
    Posts:
    15
    Hiii, I have resolved the issue. Sorry for not being clear enough, but I've used the MediaDeviceQuery to get the camera.

    Code (CSharp):
    1. public async Task<Texture2D> SetMediaDevices()
    2.     {
    3.          _rawImage = GetComponent<RawImage>();
    4.         _rawImage.alpha(0);
    5.         _aspectRatioFitter = GetComponent<AspectRatioFitter>();
    6.  
    7.         MediaDeviceQuery _audioDeviceQuery = new MediaDeviceQuery(MediaDeviceQuery.Criteria.AudioDevice);
    8.         MediaDeviceQuery _cameraFrontDeviceQuery = new MediaDeviceQuery(MediaDeviceQuery.Criteria.FrontFacing);
    9.         MediaDeviceQuery _cameraRearDeviceQuery = new MediaDeviceQuery(MediaDeviceQuery.Criteria.RearFacing);
    10.  
    11.         _audioDevice = (IAudioDevice)_audioDeviceQuery.currentDevice;
    12.         frontCameraDevice = (ICameraDevice)_cameraFrontDeviceQuery.currentDevice;
    13.         rearCameraDevice = (ICameraDevice)_cameraRearDeviceQuery.currentDevice;
    14.  
    15.         _cameraTexture = await frontCameraDevice.StartRunning();
    16.         _rawImage.texture = _cameraTexture;
    17.         Texture2D texture2D = _cameraTexture;
    18.  
    19.         // Scale preview panel for portrait only.
    20.         _aspectRatioFitter.aspectRatio = (float)_cameraTexture.width / (float)_cameraTexture.height;
    21.  
    22.         return texture2D;
    23.     }
    To everyone with the same issue: if the ICameraDevice isn't properly cleared/stopped, then it will keep running. This will cause issues if you use the camera for multiple purposes. So in my case, I just needed to do this:

    Code (CSharp):
    1.     public void TurnOffCameraIfAlreadyOn()
    2.     {
    3.         if (frontCameraDevice != null && RecordingHandler.Instance.frontCameraDevice.running)
    4.         {
    5.             frontCameraDevice.StopRunning();
    6.         }
    7.  
    8.         if (rearCameraDevice != null && RecordingHandler.Instance.rearCameraDevice.running)
    9.         {
    10.             rearCameraDevice.StopRunning();
    11.         }
    12.     }
    Thank you Lanre, for this wonderful plugin :)!
     
    Lanre likes this.
  38. IGOODI_IT

    IGOODI_IT

    Joined:
    Feb 11, 2020
    Posts:
    8
    Hello,
    First of all thank you for the great help you provided last time we had an issue. Now I'm back because on some devices (huawei p30 lite) our app crashes when we try to record the screen using a MP4 recorder, as soon as the recording starts. Here is the code:

    Code (CSharp):
    1.     public void startRecording()
    2.     {
    3.         int x = Screen.width - (Screen.width % 2);
    4.         int y = Screen.height - (Screen.height % 2);
    5.  
    6.         recorder = new MP4Recorder(x, y, 24);
    7.         RealtimeClock clock = new RealtimeClock();
    8.         cameraInput = new CameraInput(recorder, clock, Camera.main);
    9.     }
    And here is the logcat:
    Code (CSharp):
    1. --------- beginning of system
    2. 12-29 18:08:17.032 17825 17825 D ActivityThread: Attach thread to application
    3. 12-29 18:08:17.340 17825 17825 V ActivityThread: callActivityOnCreate
    4. 12-29 18:08:17.412 17825 17825 D ActivityThread: add activity client record, r= ActivityRecord{211534e token=android.os.BinderProxy@d1dd94c {com.IGOODISrl.IGOODI/com.google.firebase.MessagingUnityPlayerActivity}} token= android.os.BinderProxy@d1dd94c
    5. --------- beginning of main
    6. 12-29 18:10:28.991 17825 17825 W IInputConnectionWrapper: getExtractedText on inactive InputConnection
    7. 12-29 18:10:28.993 17825 17825 W IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
    8. 12-29 18:10:29.218 17825 17825 I Unity   : onPause
    9. 12-29 18:10:29.266 17825 17891 D         : PlayerBase::stop() from IPlayer
    10. 12-29 18:10:29.268 17825 17891 D AudioTrack: stop(71): called with 1441920 frames delivered
    11. 12-29 18:10:29.280 17825 17891 D Unity   : Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-lsm6ds3-c / st
    12. 12-29 18:10:29.328 17825 17891 D Unity   : SetWindow 0 0x0
    13. 12-29 18:10:29.676 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:120755): avc: granted { write } for pid=17825 name="160926182900005.28e725e6" dev="sdcardfs" ino=5229 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    14. 12-29 18:10:29.676 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:120756): avc: granted { add_name } for pid=17825 name="d" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    15. 12-29 18:10:29.676 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:120757): avc: granted { create } for pid=17825 name="d" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0:c211,c256,c512,c768 tclass=file
    16. 12-29 18:10:29.676 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:120758): avc: granted { write open } for pid=17825 path="/storage/emulated/0/Android/data/com.IGOODISrl.IGOODI/files/Unity/e2cc9948-5dc8-4167-b6b2-0e31261171c0/Analytics/ArchivedEvents/160926182900005.28e725e6/d" dev="sdcardfs" ino=13254 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
    17. 12-29 18:10:29.676 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:120759): avc: granted { read write } for pid=17825 name="d" dev="sdcardfs" ino=13254 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
    18. 12-29 18:10:30.117 17825 17886 D ZrHung.AppEyeUiProbe: not watching, wait.
    19. 12-29 18:10:51.693 17825 17887 W libEGL  : EGLNativeWindowType 0x71db45af90 disconnect failed
    20. 12-29 18:10:51.720 17825 17887 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
    21. 12-29 18:10:51.729 17825 17891 D Unity   : SetWindow 0 0x717c449010
    22. 12-29 18:10:51.729 17825 17891 D Unity   : SetWindow 0 0x717c449010
    23. 12-29 18:10:51.843 17825 17825 I HwViewRootImpl: removeInvalidNode all the node in jank list is out of time
    24. 12-29 18:10:51.846 17825 17825 I Unity   : onResume
    25. 12-29 18:10:51.846 17825 17891 D Unity   : [EGL] Attaching window :0x717c449010
    26. 12-29 18:10:51.846 17825 17886 D ZrHung.AppEyeUiProbe: restart watching
    27. 12-29 18:10:51.948 17825 17825 W UnityMain: type=1400 audit(0.0:120948): avc: granted { write } for pid=17825 name="values" dev="sdcardfs" ino=16294 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
    28. 12-29 18:10:51.948 17825 17825 W UnityMain: type=1400 audit(0.0:120949): avc: granted { write open } for pid=17825 path="/storage/emulated/0/Android/data/com.IGOODISrl.IGOODI/files/Unity/e2cc9948-5dc8-4167-b6b2-0e31261171c0/Analytics/values" dev="sdcardfs" ino=16294 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file12-29 18:10:51.948 17825 17825 W UnityMain: type=1400 audit(0.0:120950): avc: granted { write } for pid=17825 name="values" dev="sdcardfs" ino=16294 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
    29. 12-29 18:10:51.950 17825 17891 V AudioManager: getStreamVolume streamType: 3 volume: 0
    30. 12-29 18:10:51.950 17825 17891 D Unity   : Choreographer available: Enabling VSYNC timing
    31. 12-29 18:10:51.952 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:120951): avc: granted { write } for pid=17825 name="ArchivedEvents" dev="sdcardfs" ino=9263 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    32. 12-29 18:10:51.952 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:120952): avc: granted { add_name } for pid=17825 name="160926185100006.28e725e6" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    33. 12-29 18:10:51.981 17825 17825 V AudioManager: getStreamVolume streamType: 3 volume: 0
    34. 12-29 18:11:18.395 17825 17950 I         : recheck for pg, sessionid : 537
    35. 12-29 18:11:48.562 17825 17825 W IInputConnectionWrapper: getExtractedText on inactive InputConnection
    36. 12-29 18:11:48.592 17825 17825 W IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
    37. 12-29 18:11:48.781 17825 17825 I Unity   : onPause
    38. 12-29 18:11:48.788 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:121093): avc: granted { write } for pid=17825 name="ArchivedEvents" dev="sdcardfs" ino=9263 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    39. 12-29 18:11:48.788 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:121094): avc: granted { add_name } for pid=17825 name="160926190800007.28e725e6" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    40. 12-29 18:11:48.788 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:121095): avc: granted { create } for pid=17825 name="160926190800007.28e725e6" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0:c211,c256,c512,c768 tclass=dir
    41. 12-29 18:11:48.788 17825 17825 W UnityMain: type=1400 audit(0.0:121096): avc: granted { write } for pid=17825 name="values" dev="sdcardfs" ino=16294 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
    42. 12-29 18:11:48.788 17825 17825 W UnityMain: type=1400 audit(0.0:121097): avc: granted { write open } for pid=17825 path="/storage/emulated/0/Android/data/com.IGOODISrl.IGOODI/files/Unity/e2cc9948-5dc8-4167-b6b2-0e31261171c0/Analytics/values" dev="sdcardfs" ino=16294 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file12-29 18:11:48.788 17825 17825 W UnityMain: type=1400 audit(0.0:121098): avc: granted { write } for pid=17825 name="values" dev="sdcardfs" ino=16294 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file
    43. 12-29 18:11:48.788 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:121099): avc: granted { write } for pid=17825 name="160926190800007.28e725e6" dev="sdcardfs" ino=30057 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    44. 12-29 18:11:48.788 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:121100): avc: granted { add_name } for pid=17825 name="s" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    45. 12-29 18:11:48.788 17825 17825 W CloudJob.Worker: type=1400 audit(0.0:121101): avc: granted { create } for pid=17825 name="s" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0:c211,c256,c512,c768 tclass=file
    46. 12-29 18:11:48.816 17825 17891 D         : PlayerBase::stop() from IPlayer
    47. 12-29 18:11:48.828 17825 17891 D AudioTrack: stop(71): called with 2731204 frames delivered
    48. 12-29 18:11:48.833 17825 17891 D Unity   : Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-lsm6ds3-c / st
    49. 12-29 18:11:48.880 17825 17891 D Unity   : SetWindow 0 0x0
    50. 12-29 18:11:48.914 17825 17886 D ZrHung.AppEyeUiProbe: not watching, wait.
    51. 12-29 18:11:54.854 17825 17886 D ZrHung.AppEyeUiProbe: restart watching
    52. 12-29 18:11:54.860 17825 17825 I Unity   : onResume
    53. 12-29 18:11:54.861 17825 17825 V AudioManager: getStreamVolume streamType: 3 volume: 0
    54. 12-29 18:11:54.911 17825 17887 W libEGL  : EGLNativeWindowType 0x71db45af90 disconnect failed
    55. 12-29 18:11:54.925 17825 17887 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
    56. 12-29 18:11:54.928 17825 17891 D Unity   : SetWindow 0 0x71cd524010
    57. 12-29 18:11:54.929 17825 17891 D Unity   : SetWindow 0 0x71cd524010
    58. 12-29 18:11:54.929 17825 17891 D Unity   : [EGL] Attaching window :0x71cd524010
    59. 12-29 18:11:54.932 17825 17891 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
    60. 12-29 18:11:54.934 17825 17891 D Unity   : ANativeWindow: (1080/2107) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (1080/2107)
    61. 12-29 18:11:54.946 17825 17891 D Unity   : Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-lsm6ds3-c / st
    62. 12-29 18:11:54.957 17825 17825 I HwViewRootImpl: removeInvalidNode all the node in jank list is out of time
    63. 12-29 18:11:55.010 17825 17825 V AudioManager: getStreamVolume streamType: 3 volume: 0
    64. 12-29 18:11:55.147 17825 17825 V AudioManager: getStreamVolume streamType: 3 volume: 0
    65. 12-29 18:11:58.996 17825 17953 D Unity   : Unloading 6 Unused Serialized files (Serialized files now loaded: 0)
    66. 12-29 18:11:59.019 17825 17891 D Unity   : UnloadTime: 6.771355 ms
    67. 12-29 18:11:59.046 17825 17891 D Unity   : System memory in use before: 67.5 MB.
    68. 12-29 18:11:59.092 17825 17891 D Unity   : System memory in use after: 67.6 MB.
    69. 12-29 18:11:59.093 17825 17891 D Unity   :
    70. 12-29 18:11:59.093 17825 17891 D Unity   : Unloading 26 unused Assets to reduce memory usage. Loaded Objects now: 1358.
    71. 12-29 18:11:59.093 17825 17891 D Unity   : Total: 46.640625 ms (FindLiveObjects: 0.951563 ms CreateObjectMapping: 0.309896 ms MarkObjects: 44.690625 ms  DeleteObjects: 0.681250 ms)
    72. 12-29 18:11:59.093 17825 17891 D Unity   :
    73. 12-29 18:12:01.864 17825 17891 I Unity   : 1080 - 2106
    74. 12-29 18:12:01.864 17825 17891 I Unity   : ScreenshotCameraController:startRecording()
    75. 12-29 18:12:01.864 17825 17891 I Unity   :
    76. 12-29 18:12:01.864 17825 17891 I Unity   : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
    77. 12-29 18:12:01.864 17825 17891 I Unity   :
    78. 12-29 18:12:01.865 17825 17891 I Unity   : 1080 - 2107
    79. 12-29 18:12:01.865 17825 17891 I Unity   : ScreenshotCameraController:startRecording()
    80. 12-29 18:12:01.865 17825 17891 I Unity   :
    81. 12-29 18:12:01.865 17825 17891 I Unity   : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
    82. 12-29 18:12:01.865 17825 17891 I Unity   :
    83. 12-29 18:12:01.880 17825 17825 W UnityMain: type=1400 audit(0.0:121403): avc: granted { write } for pid=17825 name="files" dev="sdcardfs" ino=35150 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir12-29 18:12:01.880 17825 17825 W UnityMain: type=1400 audit(0.0:121404): avc: granted { add_name } for pid=17825 name="recording_2020_12_29_18_12_01_870.mp4" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=dir
    84. 12-29 18:12:01.880 17825 17825 W UnityMain: type=1400 audit(0.0:121405): avc: granted { create } for pid=17825 name="recording_2020_12_29_18_12_01_870.mp4" scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0:c211,c256,c512,c768 tclass=file
    85. 12-29 18:12:01.894 17825 17891 E libc    : Access denied finding property "ro.kirin.product.platform"
    86. 12-29 18:12:01.894 17825 17891 W HwExtendedCodec: The mime is not in hisi extended mime.
    87. 12-29 18:12:01.892 17825 17825 W UnityMain: type=1400 audit(0.0:121408): avc: denied { read } for pid=17825 name="u:object_r:product_platform_prop:s0" dev="tmpfs" ino=1609 scontext=u:r:untrusted_app:s0:c211,c256,c512,c768 tcontext=u:object_r:product_platform_prop:s0 tclass=file permissive=0
    88. 12-29 18:12:01.908 17825 18905 I OMXClient: IOmx service obtained
    89. 12-29 18:12:01.946 17825 18905 I ACodec  : In onAllocateComponent create compenent, codec name: OMX.hisi.video.encoder.avc
    90. 12-29 18:12:01.958 17825 18905 W OMXUtils: do not know color format 0x7f000001 = 2130706433
    91. 12-29 18:12:01.959 17825 18905 W OMXUtils: do not know color format 0x16 = 22
    92. 12-29 18:12:01.960 17825 18905 W OMXUtils: do not know color format 0x19 = 25
    93. 12-29 18:12:01.960 17825 18905 W OMXUtils: do not know color format 0x1a = 26
    94. 12-29 18:12:01.961 17825 18905 W OMXUtils: do not know color format 0x1b = 27
    95. 12-29 18:12:01.961 17825 18905 W OMXUtils: do not know color format 0x1c = 28
    96. 12-29 18:12:01.961 17825 18905 W OMXUtils: do not know color format 0x10 = 16
    97. 12-29 18:12:01.962 17825 18905 W OMXUtils: do not know color format 0x7f00000f = 2130706447
    98. 12-29 18:12:01.962 17825 18905 W OMXUtils: do not know color format 0xf = 15
    99. 12-29 18:12:01.963 17825 18905 W OMXUtils: do not know color format 0x7f000789 = 2130708361
    100. 12-29 18:12:01.963 17825 18905 E ACodec  : [OMX.hisi.video.encoder.avc] failed to set input port definition parameters.
    101. 12-29 18:12:01.963 17825 18905 E ACodec  : [OMX.hisi.video.encoder.avc] configureCodec returning error -1010
    102. 12-29 18:12:01.963 17825 18905 E ACodec  : signalError(omxError 0x80001001, internalError -1010)
    103. 12-29 18:12:01.963 17825 18904 E MediaCodec: Codec reported err 0xfffffc0e, actionCode 0, while in state 3
    104. 12-29 18:12:01.968 17825 17891 E MediaCodec: configure failed with err 0xfffffc0e, resetting...
    105. 12-29 18:12:01.978 17825 18905 I OMXClient: IOmx service obtained
    106. 12-29 18:12:01.981 17825 18905 I ACodec  : In onAllocateComponent create compenent, codec name: OMX.hisi.video.encoder.avc
    107. 12-29 18:12:01.989 17825 17891 F GOODISrl.IGOOD: java_vm_ext.cc:570] JNI DETECTED ERROR IN APPLICATION: java_object == null
    108. 12-29 18:12:01.989 17825 17891 F GOODISrl.IGOOD: java_vm_ext.cc:570]     in call to GetObjectClass
    109. 12-29 18:12:01.989 17825 17891 F GOODISrl.IGOOD: java_vm_ext.cc:570]     from boolean com.unity3d.player.UnityPlayer.nativeRender()
    110. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] Runtime aborting...
    111. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] Dumping all threads without mutator lock held
    112. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] All threads:
    113. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] DALVIK THREADS (41):
    114. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "UnityMain" prio=5 tid=29 Runnable
    115. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=0 dsCount=0 flags=0 obj=0x13240fa8 self=0x71db861800
    116. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17891 nice=0 cgrp=default sched=0/0 handle=0x716c50cd50
    117. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=R schedstat=( 39249133336 1440723937 19494 ) utm=3398 stm=526 core=4 HZ=100
    118. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x716c40a000-0x716c40c000 stackSize=1039KB
    119. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes= "abort lock" "mutator lock"(shared held)
    120. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000041cccc  /apex/com.android.runtime/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140)
    121. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 000000000050e6d4  /apex/com.android.runtime/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+508)
    122. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 00000000005290b4  /apex/com.android.runtime/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+820)
    123. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000005220bc  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+456)
    124. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 0000000000521514  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+1816)
    125. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 00000000004cee74  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+1700)
    126. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #06 pc 000000000000c5b4  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
    127. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #07 pc 0000000000382d94  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1592)
    128. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #08 pc 000000000039464c  /apex/com.android.runtime/lib64/libart.so (art::JNI::GetObjectClass(_JNIEnv*, _jobject*)+988)
    129. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #09 pc 00000000000011d8  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libNatCorder.so (NCFrameSize+148)
    130. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #10 pc 000000000106e840  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libil2cpp.so (???)
    131. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #11 pc 000000000106eefc  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libil2cpp.so (???)
    132. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #12 pc 000000000106bd24  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libil2cpp.so (???)
    133. 12-29 18:12:02.486 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #13 pc 0000000001076488  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libil2cpp.so (???)
    134. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #14 pc 00000000007f5980  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libil2cpp.so (???)
    135. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #15 pc 0000000000738540  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libil2cpp.so (???)
    136. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #16 pc 0000000000c09b34  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool)+164)
    137. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #17 pc 0000000000c1a384  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool)+152)
    138. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #18 pc 0000000000c24888  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (MonoBehaviour::CallUpdateMethod(int)+292)
    139. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #19 pc 000000000082afa8  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (void BaseBehaviourManager::CommonUpdate<BehaviourManager>()+204)
    140. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #20 pc 000000000082aec8  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (BehaviourManager::Update()+32)
    141. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #21 pc 00000000009cd1d4  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (_ZZ23InitPlayerLoopCallbacksvEN41UpdateScriptRunBehaviourUpdateRegistrator7ForwardEv+48)
    142. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #22 pc 00000000009c3990  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*)+80)
    143. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #23 pc 00000000009c39e8  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (ExecutePlayerLoop(NativePlayerLoopSystem*)+168)
    144. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #24 pc 00000000009c3c44  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (PlayerLoop()+368)
    145. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #25 pc 0000000000c9d7b0  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (UnityPlayerLoop()+708)
    146. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #26 pc 0000000000cc803c  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (nativeRender(_JNIEnv*, _jobject*)+72)
    147. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #27 pc 000000000014d350  /apex/com.android.runtime/lib64/libart.so (art_quick_generic_jni_trampoline+144)
    148. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #28 pc 0000000002018488  /memfd:/jit-cache (deleted) (com.unity3d.player.UnityPlayer.access$300+40)
    149. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #29 pc 000000000201ad6c  /memfd:/jit-cache (deleted) (com.unity3d.player.UnityPlayer$e$1.handleMessage+476)
    150. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #30 pc 000000000201b3ac  /memfd:/jit-cache (deleted) (android.os.Handler.dispatchMessage+124)
    151. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #31 pc 0000000002027710  /memfd:/jit-cache (deleted) (android.os.Looper.loop+1216)
    152. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #32 pc 000000000014463c  /apex/com.android.runtime/lib64/libart.so (art_quick_osr_stub+60)
    153. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #33 pc 000000000034337c  /apex/com.android.runtime/lib64/libart.so (art::jit::Jit::MaybeDoOnStackReplacement(art::Thread*, art::ArtMethod*, unsigned int, int, art::JValue*)+1660)
    154. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #34 pc 00000000005c5fc0  /apex/com.android.runtime/lib64/libart.so (MterpMaybeDoOnStackReplacement+212)
    155. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #35 pc 0000000000143350  /apex/com.android.runtime/lib64/libart.so (MterpHelpers+240)
    156. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #36 pc 000000000034b3c0  /system/framework/framework.jar (android.os.Looper.loop+1076)
    157. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #37 pc 00000000005bdf94  /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+1136)
    158. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #38 pc 000000000013e994  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static+20)
    159. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #39 pc 000000000021f73c  [anon:dalvik-classes2.dex extracted in memory from /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/base.apk!classes2.dex] (com.unity3d.player.UnityPlayer$e.run+40)
    160. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #40 pc 00000000002bf948  /apex/com.android.runtime/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.4040658722762997890+240)
    161. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #41 pc 00000000005a62c8  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1012)
    162. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #42 pc 000000000014d468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
    163. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #43 pc 0000000000144334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
    164. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #44 pc 00000000001531a4  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+252)12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #45 pc 00000000004c6d18  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
    165. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #46 pc 00000000004c7dac  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
    166. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #47 pc 0000000000507d7c  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
    167. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #48 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    168. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #49 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    169. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at com.unity3d.player.UnityPlayer.nativeRender(Native method)
    170. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at com.unity3d.player.UnityPlayer.access$300(unavailable:-1)
    171. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at com.unity3d.player.UnityPlayer$e$1.handleMessage(unavailable:-1)
    172. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at android.os.Handler.dispatchMessage(Handler.java:103)
    173. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at android.os.Looper.loop(Looper.java:213)
    174. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at com.unity3d.player.UnityPlayer$e.run(unavailable:-1)
    175. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    176. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "main" prio=10 tid=1 Native
    177. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x73058db0 self=0x71e7e10800
    178. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17825 nice=-10 cgrp=default sched=0/0 handle=0x726ebc2ed0
    179. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 2238367729 361565113 2267 ) utm=191 stm=32 core=2 HZ=100
    180. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x7fd440e000-0x7fd4410000 stackSize=8192KB
    181. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    182. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17825/stack)
    183. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000006bafc  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
    184. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000159188  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    185. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000395f74  /apex/com.android.runtime/lib64/libart.so (art::JNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+472)
    186. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 0000000000003fcc  /apex/com.android.runtime/lib64/libnativehelper.so (_JNIEnv::CallObjectMethod(_jobject*, _jmethodID*, ...)+116)
    187. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 000000000012eec0  /system/lib64/libandroid_runtime.so (android::NativeDisplayEventReceiver::dispatchVsync(long, unsigned long, unsigned int)+48)
    188. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000060b74  /system/lib64/libandroidfw.so (android::DisplayEventDispatcher::handleEvent(int, int, void*)+152)
    189. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #06 pc 0000000000017dc8  /system/lib64/libutils.so (android::Looper::pollInner(int)+856)
    190. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #07 pc 00000000000179d0  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+56)
    191. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #08 pc 000000000016371c  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
    192. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at android.os.MessageQueue.nativePollOnce(Native method)
    193. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at android.os.MessageQueue.next(MessageQueue.java:363)
    194. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at android.os.Looper.loop(Looper.java:173)
    195. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at android.app.ActivityThread.main(ActivityThread.java:8178)
    196. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.reflect.Method.invoke(Native method)
    197. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
    198. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
    199. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    200. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "Jit thread pool worker thread 0" prio=5 tid=2 Native
    201. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240358 self=0x71db43f000
    202. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17834 nice=0 cgrp=default sched=0/0 handle=0x71dc622d40
    203. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 911072912 314113546 1186 ) utm=74 stm=16 core=2 HZ=100
    204. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dc524000-0x71dc526000 stackSize=1023KB
    205. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    206. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17834/stack)
    207. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000006bafc  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
    208. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000159188  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    209. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 000000000052ab0c  /apex/com.android.runtime/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+260)
    210. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 0000000000529e9c  /apex/com.android.runtime/lib64/libart.so (art::ThreadPoolWorker::Run()+144)
    211. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 0000000000529960  /apex/com.android.runtime/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+148)
    212. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    213. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #06 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    214. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    215. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    216. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "Signal Catcher" prio=5 tid=7 WaitingInMainSignalCatcherLoop
    217. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x132403d0 self=0x71df487800
    218. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17839 nice=0 cgrp=default sched=0/0 handle=0x71dc51dd50
    219. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 470832 5317188 16 ) utm=0 stm=0 core=4 HZ=100
    220. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dc427000-0x71dc429000 stackSize=991KB
    221. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    222. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17839/stack)
    223. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 00000000000b9a78  /apex/com.android.runtime/lib64/bionic/libc.so (__rt_sigtimedwait+8)
    224. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 000000000007b964  /apex/com.android.runtime/lib64/bionic/libc.so (sigwait+128)
    225. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 00000000004f085c  /apex/com.android.runtime/lib64/libart.so (art::SignalCatcher::WaitForSignal(art::Thread*, art::SignalSet&)+392)
    226. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000004ef5c0  /apex/com.android.runtime/lib64/libart.so (art::SignalCatcher::Run(void*)+268)
    227. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    228. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    229. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    230. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    231. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "ADB-JDWP Connection Control Thread" prio=5 tid=8 WaitingInMainDebuggerLoop
    232. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240448 self=0x71db433800
    233. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17840 nice=0 cgrp=default sched=0/0 handle=0x71dc420d50
    234. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 771875 5272917 26 ) utm=0 stm=0 core=0 HZ=100
    235. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dc32a000-0x71dc32c000 stackSize=991KB
    236. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    237. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17840/stack)
    238. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 00000000000b9978  /apex/com.android.runtime/lib64/bionic/libc.so (__ppoll+8)
    239. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 000000000007945c  /apex/com.android.runtime/lib64/bionic/libc.so (poll+88)
    240. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000008c08  /apex/com.android.runtime/lib64/libadbconnection.so (adbconnection::AdbConnectionState::RunPollLoop(art::Thread*)+824)
    241. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 0000000000007024  /apex/com.android.runtime/lib64/libadbconnection.so (adbconnection::CallbackFunction(void*)+1076)
    242. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    243. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    244. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    245. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    246. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "ReferenceQueueDaemon" prio=5 tid=9 Waiting
    247. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x132404c0 self=0x71e7f6c800
    248. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17842 nice=4 cgrp=default sched=0/0 handle=0x71dc21ad50
    249. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 10980734 10746871 57 ) utm=0 stm=0 core=0 HZ=100
    250. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dc118000-0x71dc11a000 stackSize=1039KB
    251. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    252. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17842/stack)
    253. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000006bafc  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
    254. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000159188  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    255. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000416d98  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+620)
    256. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000004187fc  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+284)
    257. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Native method)
    258. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   - waiting on <0x0721777e> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
    259. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Object.java:442)
    260. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Object.java:568)
    261. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:215)
    262. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   - locked <0x0721777e> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
    263. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    264. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Thread.run(Thread.java:929)
    265. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    266. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "FinalizerDaemon" prio=5 tid=10 Waiting
    267. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240538 self=0x71e7f6e400
    268. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17843 nice=4 cgrp=default sched=0/0 handle=0x71dc111d50
    269. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 15664585 7031248 36 ) utm=1 stm=0 core=0 HZ=100
    270. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dc00f000-0x71dc011000 stackSize=1039KB
    271. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    272. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17843/stack)
    273. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000006bafc  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
    274. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000159188  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    275. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000416d98  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+620)
    276. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000004187fc  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+284)
    277. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Native method)
    278. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   - waiting on <0x051c74df> (a java.lang.Object)
    279. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Object.java:442)
    280. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
    281. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   - locked <0x051c74df> (a java.lang.Object)
    282. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
    283. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:271)
    284. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    285. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Thread.run(Thread.java:929)
    286. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    287. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "HeapTaskDaemon" prio=5 tid=11 WaitingForTaskProcessor
    288. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13242630 self=0x71e7f6ac00
    289. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17841 nice=4 cgrp=default sched=0/0 handle=0x71dc323d50
    290. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 231689064 22393749 79 ) utm=20 stm=2 core=0 HZ=100
    291. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dc221000-0x71dc223000 stackSize=1039KB
    292. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    293. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17841/stack)
    294. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000006bafc  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
    295. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000159188  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    296. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 000000000029b0b0  /apex/com.android.runtime/lib64/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+444)
    297. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 000000000029b948  /apex/com.android.runtime/lib64/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+92)
    298. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at dalvik.system.VMRuntime.runHeapTasks(Native method)
    299. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$HeapTaskDaemon.runInternal(Daemons.java:523)
    300. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    301. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Thread.run(Thread.java:929)
    302. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    303. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "FinalizerWatchdogDaemon" prio=5 tid=12 Waiting
    304. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x132405b0 self=0x71e7f70000
    305. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17844 nice=4 cgrp=default sched=0/0 handle=0x71dc008d50
    306. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 998959 11429167 18 ) utm=0 stm=0 core=0 HZ=100
    307. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dbf06000-0x71dbf08000 stackSize=1039KB
    308. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    309. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17844/stack)
    310. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000006bafc  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
    311. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000159188  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    312. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000416d98  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+620)
    313. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000004187fc  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+284)
    314. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Native method)
    315. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   - waiting on <0x0c33e52c> (a java.lang.Daemons$FinalizerWatchdogDaemon)
    316. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Object.java:442)
    317. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Object.wait(Object.java:568)
    318. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:339)
    319. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   - locked <0x0c33e52c> (a java.lang.Daemons$FinalizerWatchdogDaemon)
    320. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:319)
    321. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    322. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.lang.Thread.run(Thread.java:929)
    323. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    324. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "Binder:17825_1" prio=5 tid=13 Native
    325. 12-29 18:12:02.487 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240628 self=0x71cd493000
    326. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17845 nice=0 cgrp=default sched=0/0 handle=0x71dbe01d50
    327. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 31529688 31251045 115 ) utm=2 stm=0 core=6 HZ=100
    328. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dbd0b000-0x71dbd0d000 stackSize=991KB
    329. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    330. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17845/stack)
    331. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 00000000000b9934  /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
    332. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000077484  /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
    333. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000062304  /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    334. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000000624d8  /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    335. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 0000000000062d34  /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    336. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000088dcc  /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    337. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #06 pc 0000000000013674  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+288)
    338. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #07 pc 00000000000e5e4c  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    339. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #08 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    340. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #09 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    341. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    342. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    343. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "Binder:17825_2" prio=5 tid=14 Native
    344. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x132406a0 self=0x71db46c000
    345. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17846 nice=0 cgrp=default sched=0/0 handle=0x71dbd04d50
    346. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 61728115 37628647 142 ) utm=5 stm=0 core=4 HZ=100
    347. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dbc0e000-0x71dbc10000 stackSize=991KB
    348. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    349. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17846/stack)
    350. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 00000000000b9934  /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
    351. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000077484  /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
    352. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000062304  /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    353. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000000624d8  /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    354. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 0000000000062d34  /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    355. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000088dcc  /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    356. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #06 pc 0000000000013674  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+288)
    357. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #07 pc 00000000000e5e4c  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    358. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #08 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    359. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #09 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    360. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    361. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    362. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "Binder:17825_3" prio=5 tid=16 Native
    363. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240718 self=0x71db47d800
    364. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17848 nice=0 cgrp=default sched=0/0 handle=0x71dbafed50
    365. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 45588016 185643748 171 ) utm=3 stm=0 core=0 HZ=100
    366. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71dba08000-0x71dba0a000 stackSize=991KB
    367. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    368. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17848/stack)
    369. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 00000000000b9934  /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
    370. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000077484  /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
    371. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000062304  /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    372. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000000624d8  /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    373. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 0000000000062d34  /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    374. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000088dcc  /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    375. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #06 pc 0000000000013674  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+288)
    376. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #07 pc 00000000000e5e4c  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    377. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #08 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    378. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #09 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    379. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    380. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    381. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "Profile Saver" prio=5 tid=17 Native
    382. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240790 self=0x71cd486c00
    383. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17870 nice=9 cgrp=default sched=0/0 handle=0x71d73fbd50
    384. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 99381775 27948951 101 ) utm=8 stm=1 core=4 HZ=100
    385. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71d7305000-0x71d7307000 stackSize=991KB
    386. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    387. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17870/stack)
    388. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 000000000006bafc  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
    389. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000159188  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
    390. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000352c20  /apex/com.android.runtime/lib64/libart.so (art::ProfileSaver::Run()+412)
    391. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 0000000000356850  /apex/com.android.runtime/lib64/libart.so (art::ProfileSaver::RunProfileSaverThread(void*)+88)
    392. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    393. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    394. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    395. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    396. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "Binder:17825_4" prio=5 tid=18 Native
    397. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240808 self=0x71db755400
    398. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17873 nice=0 cgrp=default sched=0/0 handle=0x717a1fbd50
    399. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 69722925 126379685 194 ) utm=4 stm=2 core=4 HZ=100
    400. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x717a105000-0x717a107000 stackSize=991KB
    401. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    402. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17873/stack)
    403. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 00000000000b9934  /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
    404. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000077484  /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
    405. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #02 pc 0000000000062304  /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+256)
    406. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #03 pc 00000000000624d8  /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
    407. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #04 pc 0000000000062d34  /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60)
    408. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #05 pc 0000000000088dcc  /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
    409. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #06 pc 0000000000013674  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+288)
    410. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #07 pc 00000000000e5e4c  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
    411. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #08 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    412. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #09 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    413. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   (no managed stack frames)
    414. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    415. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] "queued-work-looper" prio=6 tid=21 Native
    416. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x13240880 self=0x71db76a400
    417. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | sysTid=17881 nice=-2 cgrp=default sched=0/0 handle=0x7176ff5d50
    418. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=S schedstat=( 69671355 46372918 132 ) utm=3 stm=3 core=5 HZ=100
    419. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x7176ef3000-0x7176ef5000 stackSize=1039KB
    420. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | held mutexes=
    421. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   kernel: (couldn't read /proc/self/task/17881/stack)
    422. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #00 pc 00000000000b97f8  /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
    423. 12-29 18:12:02.488 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 0000000000017b00  /system/lib64/libutils.so (android::Looper::pollInner(int)+144)
    424. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71d76d5000-0x71d76d7000 stackSize=1039KB
    425. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
    426. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1172)
    427. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #01 pc 00000000001595c0  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::TimedWait(art::Thread*, long, int)+168)
    428. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    429. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | stack=0x71d70ff000-0x71d7101000 stackSize=1039KB
    430. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
    431. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    432. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | group="" sCount=1 dsCount=0 flags=1 obj=0x12f80028 self=0x717c3a4800
    433. 12-29 18:12:02.491 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   | state=R schedstat=( 39450013546 1443294771 19780 ) utm=3411 stm=533 core=4 HZ=100
    434. 12-29 18:12:02.492 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]   native: #11 pc 0000000001076488  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libil2cpp.so (???)
    435. 12-29 18:12:02.497 17825 17891 D Unity   : NativeCrashSerializer::EndReport() Success!
    436. 12-29 18:12:02.501 17825 17891 E CRASH   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    437. 12-29 18:12:02.501 17825 17891 E CRASH   : Version '2019.3.13f1 (d4ddf0d95db9)', Build type 'Development', Scripting Backend 'il2cpp', CPU 'arm64-v8a'
    438. 12-29 18:12:02.501 17825 17891 E CRASH   : Build fingerprint: 'HUAWEI/MAR-LX1AEEA/HWMAR:10/HUAWEIMAR-L21A/10.0.0.275C431:user/release-keys'
    439. 12-29 18:12:02.501 17825 17891 E CRASH   : Revision: '0'
    440. 12-29 18:12:02.501 17825 17891 E CRASH   : ABI: 'arm64'
    441. 12-29 18:12:02.501 17825 17891 E CRASH   : Timestamp: 2020-12-29 18:12:02+0100
    442. 12-29 18:12:02.501 17825 17891 E CRASH   : pid: 17825, tid: 17891, name: UnityMain  >>> com.IGOODISrl.IGOODI <<<
    443. 12-29 18:12:02.501 17825 17891 E CRASH   : uid: 10211
    444. 12-29 18:12:02.501 17825 17891 E CRASH   : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
    445. 12-29 18:12:02.501 17825 17891 E CRASH   :     x0  0000000000000000  x1  00000000000045e3  x2  0000000000000006  x3  000000716c50afb0
    446. 12-29 18:12:02.501 17825 17891 E CRASH   :     x4  fefeff7167dcef9f  x5  fefeff7167dcef9f  x6  fefeff7167dcef9f  x7  7f7f7f7f7fffffff
    447. 12-29 18:12:02.501 17825 17891 E CRASH   :     x8  00000000000000f0  x9  0582bae7da99b7b6  x10 0000000000000001  x11 0000000000000000
    448. 12-29 18:12:02.501 17825 17891 E CRASH   :     x12 fffffff0fffffbdf  x13 ffffffffffffffff  x14 0000000000000004  x15 ffffffffffffffff
    449. 12-29 18:12:02.501 17825 17891 E CRASH   :     x16 000000726bd1d908  x17 000000726bcfd1b0  x18 000000006a29355d  x19 00000000000045a1
    450. 12-29 18:12:02.501 17825 17891 E CRASH   :     x20 00000000000045e3  x21 00000000ffffffff  x22 0000007141186e00  x23 00000071e789bec5
    451. 12-29 18:12:02.501 17825 17891 E CRASH   :     x24 00000071e78be86a  x25 0000000000000001  x26 000000726d27d258  x27 00000071e7ef6c10
    452. 12-29 18:12:02.501 17825 17891 E CRASH   :     x28 0000000000000000  x29 000000716c50b050
    453. 12-29 18:12:02.501 17825 17891 E CRASH   :     sp  000000716c50af90  lr  000000726bcb2040  pc  000000726bcb206c
    454. 12-29 18:12:02.501 17825 17891 E CRASH   :
    455. 12-29 18:12:02.501 17825 17891 E CRASH   : backtrace:
    456. 12-29 18:12:02.501 17825 17891 E CRASH   :       #00 pc 000000000006f06c  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160) (BuildId: 95e03d8a9f101c0f1d3d9458688aa085)
    457. 12-29 18:12:02.501 17825 17891 E CRASH   :       #01 pc 00000000004cf1a0  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2512) (BuildId: b943850aaa8ff0f9d4670c64e0312392)
    458. 12-29 18:12:02.501 17825 17891 E CRASH   :       #02 pc 000000000000c5b4  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608) (BuildId: 9b1ba30f299c594bb54939a36936205f)
    459. 12-29 18:12:02.501 17825 17891 E CRASH   :       #03 pc 0000000000382d94  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1592) (BuildId: b943850aaa8ff0f9d4670c64e0312392)
    460. 12-29 18:12:02.502 17825 17891 E CRASH   :       #04 pc 000000000039464c  /apex/com.android.runtime/lib64/libart.so (art::JNI::GetObjectClass(_JNIEnv*, _jobject*)+988) (BuildId: b943850aaa8ff0f9d4670c64e0312392)
    461. 12-29 18:12:02.502 17825 17891 E CRASH   :       #05 pc 00000000001261d8  <anonymous:00000071d7400000>
    462. 12-29 18:12:03.270 17825 17891 E CRASH   : Tombstone written to: /storage/emulated/0/Android/data/com.IGOODISrl.IGOODI/files/tombstone_00
    463. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353] No pending exception expected: android.media.MediaCodec$CodecException: Error 0xfffffc0e
    464. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at void android.media.MediaCodec.native_configure(java.lang.String[], java.lang.Object[], android.view.Surface, android.media.MediaCrypto, android.os.IHwBinder, int) (MediaCodec.java:-2)
    465. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at void android.media.MediaCodec.configure(android.media.MediaFormat, android.view.Surface, android.media.MediaCrypto, android.os.IHwBinder, int) (MediaCodec.java:2023)
    466. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at void android.media.MediaCodec.configure(android.media.MediaFormat, android.view.Surface, android.media.MediaCrypto, int) (MediaCodec.java:1951)
    467. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at void api.natsuite.natcorder.MP4Recorder.<init>(int, int, float, int, int, int, int, java.lang.String, api.natsuite.natcorder.MediaRecorder$Callback) (MP4Recorder.java:41)12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
    468. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
    469. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
    470. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:103)
    471. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at void android.os.Looper.loop() (Looper.java:213)
    472. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]   at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
    473. 12-29 18:12:03.271 17825 17891 F GOODISrl.IGOOD: thread.cc:2353]
    474. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] Runtime aborting --- recursively, so no thread-specific detail!
    475. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #00 pc 000000000041cccc  /apex/com.android.runtime/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140)
    476. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #01 pc 00000000004cee24  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+1620)
    477. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #02 pc 000000000000c5b4  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
    478. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #03 pc 0000000000513b08  /apex/com.android.runtime/lib64/libart.so (art::Thread::AssertNoPendingException() const+1152)
    479. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #04 pc 0000000000173378  /apex/com.android.runtime/lib64/libart.so (art::ClassLinker::FindClass(art::Thread*, char const*, art::Handle<art::mirror::ClassLoader>)+64)
    480. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #05 pc 000000000038c938  /apex/com.android.runtime/lib64/libart.so (art::JNI::FindClass(_JNIEnv*, char const*)+1236)
    481. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #06 pc 0000000000c83774  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (NativeRuntimeException::CatchAndRethrow()+96)
    482. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #07 pc 0000000000cc8028  /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/lib/arm64/libunity.so (nativeRender(_JNIEnv*, _jobject*)+52)
    483. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #08 pc 000000000014d350  /apex/com.android.runtime/lib64/libart.so (art_quick_generic_jni_trampoline+144)
    484. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #09 pc 0000000002018488  /memfd:/jit-cache (deleted) (com.unity3d.player.UnityPlayer.access$300+40)
    485. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #10 pc 000000000201ad6c  /memfd:/jit-cache (deleted) (com.unity3d.player.UnityPlayer$e$1.handleMessage+476)
    486. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #11 pc 000000000201b3ac  /memfd:/jit-cache (deleted) (android.os.Handler.dispatchMessage+124)
    487. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #12 pc 0000000002027710  /memfd:/jit-cache (deleted) (android.os.Looper.loop+1216)
    488. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #13 pc 000000000014463c  /apex/com.android.runtime/lib64/libart.so (art_quick_osr_stub+60)
    489. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #14 pc 000000000034337c  /apex/com.android.runtime/lib64/libart.so (art::jit::Jit::MaybeDoOnStackReplacement(art::Thread*, art::ArtMethod*, unsigned int, int, art::JValue*)+1660)
    490. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #15 pc 00000000005c5fc0  /apex/com.android.runtime/lib64/libart.so (MterpMaybeDoOnStackReplacement+212)
    491. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #16 pc 0000000000143350  /apex/com.android.runtime/lib64/libart.so (MterpHelpers+240)
    492. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #17 pc 000000000034b3c0  /system/framework/framework.jar (android.os.Looper.loop+1076)
    493. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #18 pc 00000000005bdf94  /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+1136)
    494. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #19 pc 000000000013e994  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static+20)
    495. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #20 pc 000000000021f73c  [anon:dalvik-classes2.dex extracted in memory from /data/app/com.IGOODISrl.IGOODI-Rpd2YQSs2amUPNF7nlRkMw==/base.apk!classes2.dex] (com.unity3d.player.UnityPlayer$e.run+40)
    496. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #21 pc 00000000002bf948  /apex/com.android.runtime/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.4040658722762997890+240)
    497. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #22 pc 00000000005a62c8  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1012)
    498. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #23 pc 000000000014d468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
    499. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #24 pc 0000000000144334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
    500. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #25 pc 00000000001531a4  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+252)
    501. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #26 pc 00000000004c6d18  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
    502. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #27 pc 00000000004c7dac  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
    503. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #28 pc 0000000000507d7c  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
    504. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #29 pc 00000000000ce1b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
    505. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647] #30 pc 0000000000070ba8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
    506. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:647]
    507. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656] No pending exception expected: android.media.MediaCodec$CodecException: Error 0xfffffc0e
    508. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at void android.media.MediaCodec.native_configure(java.lang.String[], java.lang.Object[], android.view.Surface, android.media.MediaCrypto, android.os.IHwBinder, int) (MediaCodec.java:-2)
    509. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at void android.media.MediaCodec.configure(android.media.MediaFormat, android.view.Surface, android.media.MediaCrypto, android.os.IHwBinder, int) (MediaCodec.java:2023)
    510. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at void android.media.MediaCodec.configure(android.media.MediaFormat, android.view.Surface, android.media.MediaCrypto, int) (MediaCodec.java:1951)
    511. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at void api.natsuite.natcorder.MP4Recorder.<init>(int, int, float, int, int, int, int, java.lang.String, api.natsuite.natcorder.MediaRecorder$Callback) (MP4Recorder.java:41)12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
    512. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
    513. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
    514. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:103)
    515. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at void android.os.Looper.loop() (Looper.java:213)
    516. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]   at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
    517. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]
    518. 12-29 18:12:03.344 17825 17891 F GOODISrl.IGOOD: runtime.cc:656]
    519. 12-29 18:12:03.344 17825 17891 E CRASH   : chained_signal_handler 575 got 6
    520. --------- beginning of crash
    521. 12-29 18:12:03.346 17825 17891 F libc    : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 17891 (UnityMain), pid 17825 (GOODISrl.IGOODI)
    522. 12-29 18:12:04.215 17825 17825 I Unity   : onPause
    I hope you will be able to help us again
     
  39. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Don't record at screen resolution. Change your resolution to 1280x720 or 1920x1080 (you might have to reverse the order if your app is in portrait).
     
  40. mayurasodariya33

    mayurasodariya33

    Joined:
    May 8, 2019
    Posts:
    5
    While recording with natcorder on an android device, If we receive any call and Answer the Phone call then Recording continues in the background and when we finish our Phone call, Recording is continued with clear audio... But when we play saved video then it has some audio gaps in between. Is it expected behavior?
     
  41. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    You should always stop recording when the app loses focus. You can listen for this event using OnApplicationFocus.
     
  42. cihad_unity

    cihad_unity

    Joined:
    Dec 27, 2019
    Posts:
    35
    Hi @Lenre

    I receive the following errors while recording on iOS.


    Code (Boo):
    1.  
    2. 2021-01-04 12:50:40.130503+0300 videoeffects[29836:6611314] NatCorder Error: MP4Recorder failed to commit video frame for time 6413793103 due to invalid recorder state: 3
    3.  
    4. 2021-01-04 12:50:40.164427+0300 videoeffects[29836:6611314] NatCorder Error: MP4Recorder failed to commit video frame for time 6448275862 due to invalid recorder state: 3
    5.  
    6. 2021-01-04 12:50:40.196182+0300 videoeffects[29836:6611314] NatCorder Error: MP4Recorder failed to commit video frame for time 6482758620 due to invalid recorder state: 3
    7.  
    8. 2021-01-04 12:50:40.236930+0300 videoeffects[29836:6611314] NatCorder Error: MP4Recorder failed to commit video frame for time 6517241379 due to invalid recorder state: 3
    What is Recorder state 3 and how can I resolve this issue? Thanks
     
  43. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    This usually happens if the app gets suspended and resumed. Can you attach the full logs from Xcode (app start to when the error starts showing up) in a .txt file? It's either that or your device has run out of storage space.
     
  44. cihad_unity

    cihad_unity

    Joined:
    Dec 27, 2019
    Posts:
    35
    Oh I had a space warning on iOS device a few days ago. Let me check if that's the issue. If that's not the problem, I'll send you full logs.
    Thanks!
     
    Lanre likes this.
  45. paranilhwe

    paranilhwe

    Joined:
    Sep 5, 2018
    Posts:
    12
    Hi @Lenre

    I am currently playing video with AVProVideo and recording with natcorder on iOS, and the following error message comes out every frame. The same code worked without any problems on android. Also worked well without AVProVideo on ios. Problem summary : AVProVideo + Natcorder on iOS.
    Could you help me?

    NatCorder Error: MP4Recorder failed to record video frame for time 1883194624 due to invalid recorder state: 3
     
  46. cihad_unity

    cihad_unity

    Joined:
    Dec 27, 2019
    Posts:
    35
    @paranilhwe same with my error.
    My issue was I thought I set FPS, but it's the frame duration in Clock constructor, you should set clock as the following
    Code (CSharp):
    1. var clock = new FixedIntervalClock(1 / frameRate, false);
     
    Lanre likes this.
  47. paranilhwe

    paranilhwe

    Joined:
    Sep 5, 2018
    Posts:
    12
    @cihad_unity

    As you said, I fixed the timestamp, so the above issue was not reproduced.
    Thank you for your help!!
     
    Lanre and cihad_unity like this.
  48. Yiliu

    Yiliu

    Joined:
    Oct 31, 2016
    Posts:
    5
    Such a package would be tremendous, above and beyond bringing smoother performance to NatCorder (which would already be amazing). Thanks for all the great work :D

    You've probably seen this already, but: I came across this [https://github.com/kidapu/AsyncGPUReadbackPlugin], which implements async GPU readback on Linux and Android. I got it working in our Android build, except that it throws a GL_INVALID_OPERATION error when running in Linear colour space. It only works in Gamma, which is a no-go for our project. I can't pretend to know enough about OpenGL to start poking under the hood for a fix. UPDATE: When I pass in a RenderTexture with sRGB conversions off, it works.

    Code (CSharp):
    1. /// This works ///
    2.  
    3. var rtDesc = new RenderTextureDescriptor(width, height);
    4. rtDesc.sRGB = false;
    5. var rTex = RenderTexture.GetTemporary(rtDesc);
    6.  
    7. var req = AsyncGPUReadbackPlugin.Request(rTex);
    8.  
    9. /// This doesn't work ///
    10.  
    11. var rtDesc = new RenderTextureDescriptor(width, height);
    12. rtDesc.sRGB = true;
    13. var rTex = RenderTexture.GetTemporary(rtDesc);
    14.  
    15. var req = AsyncGPUReadbackPlugin.Request(rTex);
    Fingers crossed for your package. I would happily pay dollars for a good working version!
     
    Last edited: Jan 21, 2021
  49. Lanre

    Lanre

    Joined:
    Dec 26, 2013
    Posts:
    3,971
    Hm, I will say I don't have any guarantees about linear support as it hasn't been a general priority. The plugin I'm working on uses a completely different mechanism for readbacks from the one used in the plugin you referenced (it uses Android-specific infrastructure, not OpenGL Pixel Buffer Objects). Feel free to email me I can share my current dev build.
     
  50. JacekCi

    JacekCi

    Joined:
    Feb 23, 2018
    Posts:
    6
    Hi,
    We are getting exception on iPhone 6 when we start recording. This doesn't repro on stronger devices like iPad or on Android. What do we miss?

    Exception:
    System.AggregateException: System.Exception: Recorder failed to finish writing

    We use :
    "recorder = new HEVCRecorder"
    "cameraInput = new CameraInput(recorder, clock, MainCamera);"
    "audioInput = new AudioInput(recorder, clock, microphoneSource, true);"

    Last line from logs
    Code (CSharp):
    1.  
    2. System.AggregateException: One or more errors occurred. ---> System.Exception: Recorder failed to finish writing
    3. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0
    4. at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00000] in <00000000000000000000000000000000>:0
    5. at System.Runtime.CompilerServices.StrongBox`1[T].System.Runtime.CompilerServices.IStrongBox.set_Value (System.Object value) [0x00000] in <00000000000000000000000000000000>:0
    6. at ourapp.CaptureManager+<StartRecording>d__23.System.Collections.IEnumerator.get_Current () [0x00000] in <00000000000000000000000000000000>:0
    7.