Пример #1
0
        public static RecordingResult StartRecording(IntPtr sessionHandle,
                                                     ARCoreRecordingConfig config)
        {
            IntPtr recordingConfigHandle = RecordingConfigApi.Create(sessionHandle, config);

            ApiArStatus status = ExternApi.ArSession_startRecording(
                sessionHandle, recordingConfigHandle);

            RecordingConfigApi.Destroy(recordingConfigHandle);

            // Only specific ArStatus responses are expected.
            switch (status)
            {
            case ApiArStatus.Success:
                return(RecordingResult.OK);

            case ApiArStatus.ErrorIllegalState:
                return(RecordingResult.ErrorIllegalState);

            case ApiArStatus.ErrorInvalidArgument:
                return(RecordingResult.ErrorInvalidArgument);

            case ApiArStatus.ErrorRecordingFailed:
                return(RecordingResult.ErrorRecordingFailed);

            default:
                Debug.LogErrorFormat("Attempt to start a recording failed with unexpected " +
                                     "status: {0}", status);
                break;
            }

            return(RecordingResult.ErrorRecordingFailed);
        }
        public static IntPtr Create(IntPtr sessionHandle, ARCoreRecordingConfig config)
        {
            IntPtr configHandle = IntPtr.Zero;

#if UNITY_ANDROID
            ExternApi.ArRecordingConfig_create(sessionHandle, ref configHandle);

            if (config != null)
            {
                ExternApi.ArRecordingConfig_setMp4DatasetFilePath(
                    sessionHandle,
                    configHandle,
                    config.Mp4DatasetFilepath);
                ExternApi.ArRecordingConfig_setAutoStopOnPause(
                    sessionHandle,
                    configHandle,
                    config.AutoStopOnPause ? 1 : 0);
                foreach (Track track in config.Tracks)
                {
                    IntPtr trackHandle = TrackApi.Create(sessionHandle, track);

                    ExternApi.ArRecordingConfig_addTrack(sessionHandle, configHandle, trackHandle);

                    // Internally the recording config uses the TrackData to generate its
                    // own local structures, so it is appropriate to destroy it after sending it to
                    // the recording config.
                    TrackApi.Destroy(trackHandle);
                }
            }
#endif

            return(configHandle);
        }
        public IntPtr Create(ARCoreRecordingConfig config)
        {
            IntPtr configHandle = IntPtr.Zero;

            ExternApi.ArRecordingConfig_create(
                _nativeSession.SessionHandle, ref configHandle);
            if (config != null)
            {
                ExternApi.ArRecordingConfig_setMp4DatasetFilePath(
                    _nativeSession.SessionHandle,
                    configHandle,
                    config.Mp4DatasetFilepath);
                ExternApi.ArRecordingConfig_setAutoStopOnPause(
                    _nativeSession.SessionHandle,
                    configHandle,
                    config.AutoStopOnPause ? 1 : 0);

                foreach (Track track in config.Tracks)
                {
                    IntPtr trackHandle =
                        _nativeSession.TrackApi.Create(track);

                    ExternApi.ArRecordingConfig_addTrack(_nativeSession.SessionHandle,
                                                         configHandle,
                                                         trackHandle);

                    // Internally the recording config uses the Track to generate its own local
                    // structures, so it is appropriate to destroy it after sending it to the
                    // recording config.
                    _nativeSession.TrackApi.Destroy(trackHandle);
                }
            }

            return(configHandle);
        }
Пример #4
0
        public static RecordingResult StartRecording(
            IntPtr sessionHandle, ARCoreRecordingConfig config)
        {
            IntPtr recordingConfigHandle = RecordingConfigApi.Create(sessionHandle, config);

            ApiArStatus status = ExternApi.ArSession_startRecording(
                sessionHandle, recordingConfigHandle);

            RecordingConfigApi.Destroy(recordingConfigHandle);
            return(status.ToRecordingResult());
        }
Пример #5
0
        public static RecordingResult StartRecording(
            IntPtr sessionHandle, ARCoreRecordingConfig config)
        {
            ApiArStatus status = ApiArStatus.ErrorFatal;

#if UNITY_ANDROID
            IntPtr recordingConfigHandle = RecordingConfigApi.Create(sessionHandle, config);
            status = ExternApi.ArSession_startRecording(sessionHandle, recordingConfigHandle);
            RecordingConfigApi.Destroy(recordingConfigHandle);
#endif
            return(status.ToRecordingResult());
        }
Пример #6
0
    /// <summary>
    /// Checks if there exists a pre-recorded dataset on start. If so, show the PlayBack button.
    /// </summary>
    private void Start()
    {
        _recordingConfig = ScriptableObject.CreateInstance <ARCoreRecordingConfig>();
        _filenameToSave  = GetDefaultDatasetName();
        _recordingConfig.Mp4DatasetFilepath = _filenameToSave;

        if (System.IO.File.Exists(Application.persistentDataPath + "/" + _defaultDatasetName))
        {
            PlaybackButton.gameObject.SetActive(true);
        }

        _recordingManager = gameObject.AddComponent <ARRecordingManager>();
        _playbackManager  = gameObject.AddComponent <ARPlaybackManager>();
    }
Пример #7
0
        public static IntPtr Create(IntPtr sessionHandle, ARCoreRecordingConfig config)
        {
            IntPtr configHandle = IntPtr.Zero;

            ExternApi.ArRecordingConfig_create(sessionHandle, ref configHandle);

            if (config != null)
            {
                ExternApi.ArRecordingConfig_setMp4DatasetFilePath(
                    sessionHandle,
                    configHandle,
                    config.Mp4DatasetFilepath);
                ExternApi.ArRecordingConfig_setAutoStopOnPause(
                    sessionHandle,
                    configHandle,
                    config.AutoStopOnPause ? 1 : 0);
            }

            return(configHandle);
        }