Windows Media foundation: IMFSinkWriter WriteSample API returning error sampleduration is not set RRS feed

  • Question

  • I have a requirement of receiving RTP stream(H264) and exporting them to a MP4 file. We are using media foundation to export frames received in RTP stream to mp4 file. So we extract H264 frames(from RTP packets) and provide it to sinkwriter through WriteSample API(sample time, sample duration etc are set). This seems to work and I get playable mp4.
    But when I don't set sample duration(using SetSampleDuration API), writeSample throws error (MF_E_NO_SAMPLE_DURATION) . The error is not thrown for first few frames but only after certain time(frame after 1.48 seconds)a
    1. Why SetSampleDuration is needed?I assumed that we don't need sample duration if we are providing sample time for every sample. Sink writer can calculate difference between the current frame and last frame as sample duration 
    2. Why the error is not thrown for first few frames by writeSample API .WriteSample throws error  only after certain time(frame after 1.48 seconds). Is it specific to certain frames.
    3. How to do we ideally set the sample duration when duration between frames is not uniform. In my case the average fps is 15 but time between 2 frames is not uniform. (Timestamp of frames in ms: 0, 83,133, 200, 283,333,400,...)
    3.1 To set sample duration of a frame, Wait for next frame and subtract current frame timestamp from next frame timestamp. Should application hold back till next frame is available
    3.2 Setting sample duration based on average fps is fine(even though time difference between frames is not uniform). 
    (Note: I tried 3.2 and it works. I can't visually see any issue. This might be because time difference between frames is not uniform but not varying much. But I am not sure if this is ok. Should I go for approach 3.1)
    Thursday, January 30, 2020 1:43 PM

All replies

  • Hi,

    Did you get any error using approach 3.1? And would you mind sharing the detailed code sample to help us to reproduce this issue?

    Regards & Fei

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Monday, February 3, 2020 6:57 AM
  • i don't get any errors in 3.1 and 3.2. I want to know which is the preferred approach.
    Saturday, February 8, 2020 3:28 PM