Virtual File System forStreaming Video • Developers: • Uri Goldenberg 039078191 firstname.lastname@example.org • Henry Abravanel 310739693 email@example.com • Academic Advisor: • Prop. Michael Elhadad, Senior Lecturer at the Department of Computer Science, Ben-Gurion University of the Negev. • Professional Advisor: • Barak Bar-Orion, Team Leader at GefenDekel Technologies LTD, Dalet
Problem Definition • Various video editing or manipulation software systems require a certain combination of container + codec. • When a customer wants to mix several applications on the same video material, we must store video in multiple formats. • A trivial solution is to convert the source video essence to multiple formats. • Another, less trivial, solution is to force all programs to use the same container + codec combination.
Our Solution • Creating a VFS that given an input of target containers and source non-interleaved video files, it would list this source video files as if they existed in the target containers file format. • Upon request of such a non existing file, the VFS would wrap the source files on-the-fly and serve them.
Software context • Our system will consist of 2 parts: • Virtual file system over Linux file system – a file system that will allow to simulate file existence. This system will also allow to monitor and configure our application in terms of caching, quality control etc... • A transcoder- amodulethat will wrap\unwrap from each format to each format.
2. Functional requirements • 2.1 Virtual File System • The VFS should list virtual video files according to pre-configured rules. • The VFS should serve virtual video files as if the they existed. Upon request to read such a file, the Transcoding module should wrap the source non-interleaved video files, and then the VFS should serve it. • The VFS should allow write operations on interleaved files. Upon such a request, the VFS should pass the video file to the Transcoding module for unwrapping and writing of non-interleaved files.
2. Functional requirements • 2.2 Transcoder • Transcodershould wrap/unwrap non-interleaved/interleaved video files. Scope of target file formats (containers) are: MPEG4, MXF, MOV (Quicktime) ordered by priority. Scope of supporting codecs are: H264, DV, MPEG2 ordered by priority.
2. Functional requirements • 2.3 Configuring • The system should allow configuration of these parameters: • Source files directory • Target files naming convention and container formats
3. Non-Functional Requirements • 3.1 Performance constraints • Speed- The system must be able to serve several streams in real time. The least is 1 stream at a specific bit rate with standard hardware. • Capacity - The VFS should convert for many clients at the same time. • Security - The assumption is that the environment is already in a secured. Hence there is no security constraints. • Portability - The application must not be portable. The system is designed to work over Linux and will not be tested on other operating systems.
3. Non-Functional Requirements • 3.1 Performance constraints • Reliability - It is essential that the system will work without errors and will not require reload especially assuming that it should work all the time. • Availability - The system should be available all the time. • Usability - Due to the fact that the system is essentially a VFS, its interface is as any other file system. Hence there is no usability considerations on this interface. The monitoring interface should be easy to understand and well documented. Moreover, the configuration file should be written in a <property,value> format that is easily editable.
3. Non-Functional Requirements • 3.2 Platform constraints • 3.2.1 Operating System • The system will only work under Linux with kernel version of 2.6.X. • 3.2.2 Extra Dependencies • ffmpeg • Fuse
4 Usage Scenarios • 4.1 User Profiles - The Actors • Reader - the reader is any entity that sends a request for reading a virtual file. For example: Adobe Flash Media Server or an editing software such as Avid video editor. The reader can also ask for meta-data and status on the file. • Writer - the writer is an entity that requests from the VFS to write a video file (interleaved). All interleaved files should be store in elementary non-interleaved file format.
4.2 Use-Cases • Name of used case: 4.2.1 Mount VFS system • Main Actor: Admin • Short description: Mount a Linux directory in which all media files are going to be available there • Pre-Conditions: The configuration file is filled with at least the minimum required parameters: Source video files directory, Target mount directory, Wrapping rules • Post-Conditions: VFS is mounted at the specified mount directory, ready for I/O operations • Normal course of events: • 1.Admin: requests to mount the system • 2.The system: validates parameters from configuration. • 3.The system: tries to mount onto the defined directory • Alternative course 1:Invalid parameters where found: • The system prints an "Invalid parameters" message with the corresponding invalid parameter(s) and exits. • Alternative course 2:Unable to mount on the specified directory: • The system prints an "Unable to mount on the specified directory" message and exits
4.2 Use-Cases • Name of used case: 4.2.2 Unmount VFS system • Main Actor: Admin • Short description: Unmount the VFS from a specified directory • Pre-Conditions: There is a mounted VFS on the specified directory ,No files are currently read or written in the mounted directory • Post-Conditions: The VFS is no longer available at the configured mount directory • Normal course of events: • Admin: requests to unmount the system • The system: sends a shut down signal to Dalet Server • The system: tries to unmount from the defined directory • Alternative course 1:Cannot umount directory:The system prints a "Cannot unmount directory because files: <list of files> are opened" message. Directory remains mounted.
4.2 Use-Cases • Name of used case: 4.2.3 Directory Listing • Main Actor: Reader • Short description: The reader requests to list all available files for reading (virtual interleaved files) from the VFS • Pre-Conditions: The VFS is mounted • Post-Conditions: None • Normal course of events: • Reader: requests to list the files in the virtual directory • The system: calculated on-the-fly any available files for reading • The system: returns the listing to the upper FS layer
4.2 Use-Cases • Name of used case: 4.2.4 Open File • Main Actor: Reader/Writer • Short description: A file was asked to be opened from the VFS • Pre-Conditions: The VFS is mounted. For reading: Virtual file exists and can be wrapped. For writing: Interleaved file can be unwrapped. • Post-Conditions: File is opened • Normal course of events: • Reader: requests to open file X • The system: "open it" and return. • Alternative course 1:The virtual file does not exists: • return to the upper FS layer a "FILE_DOES_NOT_EXISTS_ERROR" • Alternative course 2:The file is locked for reading (because of real or virtual file system):return to the upper FS layer a "FILE_IS_CURRENTLY_LOCKED_ERROR" • Alternative course 3:Unknown file format:cannot wrap/unwrap to the required format.return to the upper FS layer a "WRAP_UNWRAP_ERROR"
4.2 Use-Cases • Name of used case: 4.2.5 Read File • Main Actor: Reader • Short description: A file was asked to be read from offset OFFSET and for a buffer length of N • Pre-Conditions: • The file is open • Valid OFFSET • The Transcoder can wrap the requested video data • Post-Conditions: The Transcoder converts the requested video file to the correct format and returns to the VFS which in turn returns to the upper layer FS a buffer from offset OFFSET and a buffer length of at most N bytes. • Normal course of events: • 1. Reader: requests to read data from a previously opened file. • 2. The system: wraps the required video file and returns a buffer of at most N bytes from offset OFFSET. • Alternative course 1:Illegal offset:Illegal offset error will return from command. • Alternative course 2:File not open:An file not open error will return. • Alternative course 3:Wrapping error:cannot wrap buffer (input is corrupted). returns cannot convert data error.
4.2 Use-Cases • Name of used case: 4.2.6 Write file • Main Actor: Writer • Short description: A file was asked to be written from offset OFFSET and for a buffer length of N • Pre-Conditions: • The file is open. • Buffer contains interleaved video data • The Transcoder can unwrap the video data • Post-Conditions: The file is written in Dalet's storage in elementary files format. • Normal course of events: • 1. Writer: requests to write data to a previously opened file. • 2. The system: unwraps the given video file and stores it in the storage unit • Alternative course 1:The file is locked(because of real or virtual file system):return to the upper FS layer a "FILE_IS_CURRENTLY_LOCKED_ERROR" • Alternative course 2:File not open:An file not open error will return. • Alternative course 3:Unwrapping error:cannot unwrap buffer (input is corrupted). returns cannot convert data error.
4.2 Use-Cases • Name of used case: 4.2.7 Monitor system • Main Actor: Admin • Short description: An admin is asking to view to system state of resources. Including RAM,CPU, bit rate. The VFS is asking hardware for information. and return it to query asked. • Pre-Conditions: The system is mounted and running. • Post-Conditions: None. • Normal course of events: • 1. Admin: requests VFS state information. • 2. The system: VFS returns an answer to to monitor about it's state.