---
title: AudioVideoService
summary: API reference for AudioVideoService.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-15
library: SAIF.Application.Services.AudioVideo.32
reference_type: package
---

# AudioVideoService

`AudioVideoService` is the concrete implementation of [IAudioVideoService](../saif-core-services/IAudioVideoService.md) and the orchestration entry point for this library; it composes `IUnitOfWork`, `IEnvironmentService`, [IImportStatusManager](../saif-core-contracts-audiovideo/IImportStatusManager.md), [IRecordingSystem](../saif-core-contracts-audiovideo/IRecordingSystem.md), and `IConsoleLogService` to implement every operation in [Operations and processes](../../operations-processes.md).

## Purpose
- Implements recording import (validation, backup, conversion, verification, CallRex deletion), status retrieval, invalidation/cancellation, and claim-media-presence checks.
- Supports a reduced "disabled services" construction mode (`_enableServicesFlag == false`) in which only `HasMedia` is usable ([BR-AV-19](../../business-rules.md#br-av-19-reduced-constructor-operation-restriction)).

## Context
- Namespace: `SAIF.Services.Utilities.AudioVideo`
- Assembly/package: `SAIF.Application.Services.AudioVideo.32`
- Implements: `IAudioVideoService`, `IDisposable`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| AudioVideoService(...) | `AudioVideoService(IUnitOfWork uow, IEnvironmentService environmentService, IImportStatusManager importStatusManager, IRecordingSystem recordingSystem, IConsoleLogService logService)` | Full constructor enabling all operations. |
| AudioVideoService(IUnitOfWork uow) | `AudioVideoService(IUnitOfWork uow)` | Reduced constructor; disables all operations except `HasMedia` ([BR-AV-19](../../business-rules.md#br-av-19-reduced-constructor-operation-restriction)). |
| ImportRecording | `void ImportRecording(ImportAudioRequest request)` | Validates and imports a call recording; see [Import call recording](../../operations/import-call-recording.md). |
| MarkImportStatusErrored | `void MarkImportStatusErrored(Guid recordingId, string reason)` | Sets the import status of a recording to `Errored` with the given reason.* |
| InvalidateRecording | `void InvalidateRecording(Guid callRecordingId)` | Marks a recording invalid and clears its import status; see [Invalidate or cancel a recording](../../operations/invalidate-or-cancel-a-recording.md). |
| CancelImport | `void CancelImport(Guid callRecordingId)` | Clears a recording's import status without invalidating it in CallRex. |
| GetRecordingInfo(Guid) | `RecordingInfo GetRecordingInfo(Guid recordingId)` | Retrieves a [RecordingInfo](../saif-core-contracts-audiovideo/RecordingInfo.md) projection for a persisted recording; see [Retrieve recording status](../../operations/retrieve-recording-status.md). |
| HasMedia | `bool HasMedia(string claimId)` | Reports whether any recordings exist for the given claim; usable even in reduced-services mode. |
| Dispose | `void Dispose()` | Releases the underlying `IUnitOfWork`/`IRecordingSystem` resources. |
| VENDOR_INPUT_AUDIO_FILE_EXTENSION | `const string VENDOR_INPUT_AUDIO_FILE_EXTENSION` | The file extension of the source recording as received from CallRex (`.mp3`). |
| DESTINATION_AUDIO_FILE_EXTENSION | `const string DESTINATION_AUDIO_FILE_EXTENSION` | The file extension of the converted recording (`.wma`). |

## Behavioral notes
- `ImportRecording` follows the nine-step sequence documented in [Import call recording](../../operations/import-call-recording.md): validate, look up/create the `Recording` row, back up and MD5-verify the source file ([BR-AV-11](../../business-rules.md#br-av-11-backup-file-integrity-check)), convert to WMA ([BR-AV-12](../../business-rules.md#br-av-12-audio-conversion-format)), verify the converted file ([BR-AV-13](../../business-rules.md#br-av-13-import-verification-null-recording-check)–[BR-AV-15](../../business-rules.md#br-av-15-import-verification-zero-length-file-check)), clean up and mark errored on any failure ([BR-AV-16](../../business-rules.md#br-av-16-import-failure-cleanup)), and require successful CallRex-side deletion before marking the import complete ([BR-AV-17](../../business-rules.md#br-av-17-callrex-deletion-required-for-import-completion)).
- `CreateRecording` (private) computes `PurgeDate`/`RecordingSystemCode` from the request's `RecordingSystemTypes` ([BR-AV-06](../../business-rules.md#br-av-06-default-purge-horizon-and-recording-system-code)–[BR-AV-08](../../business-rules.md#br-av-08-fraud-recording-purge-horizon)) and calls [CallRecordingExtensions](CallRecordingExtensions.md) for description/discoverability ([BR-AV-09](../../business-rules.md#br-av-09-recording-discoverability), [BR-AV-10](../../business-rules.md#br-av-10-recording-description-default)).
- All members except `HasMedia` throw `NotImplementedException("Function not valid in this instance")` when constructed via the reduced constructor ([BR-AV-19](../../business-rules.md#br-av-19-reduced-constructor-operation-restriction)).

## Constraints and usage notes
- Callers must `Dispose()` instances to release the underlying `IUnitOfWork` and `IRecordingSystem` resources.

## Sources
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\AudioVideoService.cs`
