AttributError: "struct_pdraw_media_info' object has no attribute 'video'"

The Olympe 1.0.1 update came out today, and I couldn’t be more excited to have some direct, callable functions to access video streaming and flight metadata. I’ve been looking through the new documentation and I’ve especially been trying to understand every part of the example for the new drone.start(/stop)_video_streaming() functions. However, I believe I’m having some issues with the drone.set_streaming_output_files() function. I am using the example in the Olympe documentation as a template:

def start(self):
    # Connect the the drone
    self.drone.connection()

    # You can record the video stream from the drone if you plan to do some
    # post processing.
    self.drone.set_streaming_output_files(
        h264_data_file=os.path.join(self.tempd, 'h264_data.264'),
        h264_meta_file=os.path.join(self.tempd, 'h264_metadata.json'),
        # Here, we don't record the (huge) raw YUV video stream
        # raw_data_file=os.path.join(self.tempd,'raw_data.bin'),
        # raw_meta_file=os.path.join(self.tempd,'raw_metadata.json'),
    )

    # Setup your callback functions to do some live video processing
    self.drone.set_streaming_callbacks(
        raw_cb=self.yuv_frame_cb,
        h264_cb=self.h264_frame_cb
    )
    # Start video streaming
    self.drone.start_video_streaming()

When I run the script with commands:

streaming_example.start()
time.sleep(10)

streaming_example.stop()
streaming_example.postprocessing()

it doesn’t even get past the streaming_example.start() part. Now, I would post the error message, but I somehow get a continuous error that I have to ^C out of. Looking at what I have, I believe the potentially significant messages are:

E pdraw_decavc: decoder is not created – I’m unsure if a decoder is necessary, or even what it does, but I couldn’t find anything in pdraw.py about a decoder;

File “/home/kbean/code/parrot-groundsdk/packages/olympe/src/olympe/arsdkng/pdraw.py”, line 624, in _write_h264_header
info = media_info.video.union.h264
AttributeError: ‘struct_pdraw_media_info’ object has no attribute ‘video’
– This is the last line of a 6 step traceback. It displayed over and over again for a while before the console started displaying:

W pdraw_dmxstrm: failed to get an input buffer (-11)

hundreds of times in rapid succession, at which point I have to ^C out of the script. I’m assuming the input buffer error is related to the fact that the program tried so many times to run that call sequence, resulting in some sort of memory overflow. I believe the main problem lies in the “no attribute ‘video’” error.

When I was trying to correctly call the drone.set_streaming_output_files() function on my own, I was running into this exact same problem, so I don’t think it has to do with the specific way the function was called in their example in the documentation. I don’t know if I’m somehow missing a file, or if I need to reinstall pdraw specifically even though I successfully updated Olympe to 1.0.1. As with the decoder, I can’t even find an object called “struct_pdraw_media_info” in pdraw.py, so I don’t really know how to troubleshoot the problem. Any advice or suggestions would be appreciated. I’ll give more info as asked for.

Hello
We only pushed the documentation :wink:
The GitHub repo Update is planned for Wednesday!