| 511 | } |
| 512 | |
| 513 | void VideoBackendAndroid::Player_Stop(VideoBackendPlayer& player) |
| 514 | { |
| 515 | PROFILE_CPU(); |
| 516 | auto& playerAndroid = player.GetBackendState<VideoPlayerAndroid>(); |
| 517 | player.VideoFrameDuration = player.AudioBufferDuration = TimeSpan::Zero(); |
| 518 | playerAndroid.Playing = 0; |
| 519 | playerAndroid.InputEnded = playerAndroid.OutputEnded = 0; |
| 520 | media_status_t status = AMediaExtractor_seekTo(playerAndroid.Extractor, 0, AMEDIAEXTRACTOR_SEEK_CLOSEST_SYNC); |
| 521 | if (status != AMEDIA_OK) |
| 522 | { |
| 523 | VIDEO_API_ANDROID_ERROR(AMediaExtractor_seekTo, status); |
| 524 | } |
| 525 | if (playerAndroid.VideoCodec) |
| 526 | { |
| 527 | AMediaCodec_stop(playerAndroid.VideoCodec); |
| 528 | AMediaCodec_flush(playerAndroid.VideoCodec); |
| 529 | } |
| 530 | if (playerAndroid.AudioCodec) |
| 531 | { |
| 532 | AMediaCodec_stop(playerAndroid.VideoCodec); |
| 533 | AMediaCodec_flush(playerAndroid.VideoCodec); |
| 534 | } |
| 535 | player.StopAudio(); |
| 536 | } |
| 537 | |
| 538 | void VideoBackendAndroid::Player_Seek(VideoBackendPlayer& player, TimeSpan time) |
| 539 | { |