Proof of Concept Assembly - FrameSkipper POC FFMPEG Implementation

Register
Submit a solution
The challenge is finished.

Challenge Overview

1. Project Overview

Develop a software module for reducing the frame rate of live video stream from CCTV IP camera.

2. Competition Task Overview

Note: We don't have the live stream source so you can just focus on general video files in this contest.

The main point of the implementation requested is to not use full decode and encode to do transcoding. Most likely the transcode needs to be done in the DCT domain to achieve less CPU intense transcoding algorithm. Example research papers were provided in the project description.

In First POC Assembly, we implement the algorithm based on JM 18.5 and the performance is better than original JM implementation.

But the performance of JM Framework is not good so we need to implement the algorithm based on FFMPEG and the submission must get a better performance than FFMPEG implementation.

2.1 Requirements

  1. It should reduce the frame rate of both h.264 and mpeg4(part2) live video stream.
  2. The video stream is assumed to have only I-frame and P-frame.(No B-frames)
  3. It should be less CPU intensive the transcoding a video stream(decode, reduce frame, and re encode)
  4. The frame rate of the input video stream can vary while it is being inputed.
  5. It should take "Output frame rate" as an input using dll parameter.
  6. It should output h.264/mpeg4 frame as its output which can be decoded using "ffmpeg decoder".
  7. To achieve the necessary performance it can skip frames as 1/2, 1/3, 1/4, 1/5, 1/6 ... 1/10 frames from the original frame rate.

Note: The assembly should NOT depend on any certain CPU / Hardware features.

The performance of this project is important. Client will call it multiple times to process multiple streams at same time.

2.2 Input

  • H.264 frame (1~30 fps)
  • Output fps parameter (1~30fps) 

2.3 Output

H.264 frame (1~30 fps, less than input framerate)

2.4 Project Deliverable

FrameSkipper.dll (shared dll, 32bit and 64bit)

2.5 Supported Profiles

h.264 supported profiles
http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC 

  1. Baseline Profile (BP)
  2. Main Profile (MP)
  3. Extended Profile (XP)
  4. High Profile (HiP)
  5. Progressive High Profile (PHiP)
  6. High 4:4:4 Predictive Profile (Hi444PP)

2.6 Research Papers

The content creation document is attached.

Original papers:

https://docs.google.com/folder/d/0B0rMmRXYjUuKdWZyT1RBZGdBTHM/edit?usp=sharing

3. Submission Deliverables

  • Source Code
  • Deployment Guide
  • Test Files

4. Technology Overview

  • OS (compatible with both windows7 32bit and 64bit)
  • VisualStudio 2010 C++ (C++11 compatible)
  • STL
  • boost(1.49 or higher)
  • additional native library can be used


Final Submission Guidelines

N/A

Review style

Final Review

Community Review Board

Approval

User Sign-Off

Challenge links

ID: 30035694