ros-perception / image_transport_plugins

A set of plugins for publishing and subscribing to sensor_msgs/Image topics in representations other than raw pixel data.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[theora] Packet was not a Theora header pt. 2

flpgrz opened this issue · comments

Hello,

I know this is a an old problem already reported in an issue from 2013.

System info:
I am using ROS Melodic, theora_image_transport 1.9.5, image_transport 1.11.13. I am acquiring an image with usb_cam 0.3.6.

Problem description:
The aquisition happens on a local machine (my laptop). My goal is to subscribe to usb_cam/image_raw/theora with a node running on a remote server. When I do this, or if simply try to republish this topic from theora to raw on the remote machine, the following thing happens:

[theora] Packet was not a Theora header
and no raw image gets published of course.

Some remarks:

  1. A strange thing is that this does not occur all the times. If I try to run the node which subscribes to the theora Pack (or to run rosrun image_transfer republish theora in:=... raw out:=...) for N times, at some point it will work smoothly. Most of the times, however, it does not.

  2. Another interesting thing: on my local machine I can subscribe to the same theora topic and everything works smoothly.

Any suggestion?

Further thoughts:
The problem occurs in theora_subscriber.cpp, where the following function is called:
int rval = th_decode_headerin(&header_info_, &header_comment_, &setup_info_, &oggpacket);
This guy returns TH_ENOTFORMAT and we do not reach the code part where the image is actually decoded. Could it make sense to just remove this check from the code? I believe the image could actually be decoded and this check can stop the pipeline without a real reason.

@jkammerl FYI

commented

Did you solve this problem? I have the same problem and am not able to use theora over a public network.

@mameesie, I could never solve this issue

commented

did removing the check help any?

I think I did not try to remove it back then

commented

Unfortunately it didn't work, I think it maybe is still the same problem as #4 Thanks for your suggestion