MXF-wrapped JPEG2000 decoding

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

MXF-wrapped JPEG2000 decoding

Florian Agez
Hi,

I'm currently trying to make a very simple pipeline that would take an
MXF file with JPEG2000 video essence as input and display it. For now,
the pipeline looks something like this:

     gst-launch filesrc location="source.mxf" ! mxfdemux name=d  d. !
jp2kdec ! autovideosink

But that won't take me anywhere, I only get this error message:

     ERROR : element /GstPipeline:pipeline0/GstMXFDemux:d : Internal
data stream error.
     Additional debug info:
     mxfdemux.c(2797): gst_mxf_demux_loop ():
/GstPipeline:pipeline0/GstMXFDemux:d:
     stream stopped, reason not-negotiated


 From what I've experimented so far, it looks like mxfdemux has no
problem at all unwrapping the JPEG2000 code stream (if I just link the
demuxer to a filesink, I get a nice concatenation of valid JPEG2000 code
streams), but I can't think of a reason why jp2kdec would refuse to
handle this raw code stream. Adding to the confusion, when I try to
rewrap the code stream into an MJ2 file, I also seem to get a corrupt file.

I don't really know where to look now... Any ideas?

Thanks!

--
Florian


------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Edward Hervey
Administrator
On Thu, 2010-12-30 at 17:12 +0100, Florian Agez wrote:

> Hi,
>
> I'm currently trying to make a very simple pipeline that would take an
> MXF file with JPEG2000 video essence as input and display it. For now,
> the pipeline looks something like this:
>
>      gst-launch filesrc location="source.mxf" ! mxfdemux name=d  d. !
> jp2kdec ! autovideosink
>
> But that won't take me anywhere, I only get this error message:
>
>      ERROR : element /GstPipeline:pipeline0/GstMXFDemux:d : Internal
> data stream error.
>      Additional debug info:
>      mxfdemux.c(2797): gst_mxf_demux_loop ():
> /GstPipeline:pipeline0/GstMXFDemux:d:
>      stream stopped, reason not-negotiated
>

   Do you get any more detailed warnings when running the same command
line with "GST_DEBUG=2 gst-launch...." ?

   If nothing 'useful' comes up, please file a bug report with full
compressed log (GST_DEBUG=5 gst-launch .... > log 2>&1).
   Bonus points for quicker debugging if you also provide (a link to) a
sample file which fails.

    Edward

>
>  From what I've experimented so far, it looks like mxfdemux has no
> problem at all unwrapping the JPEG2000 code stream (if I just link the
> demuxer to a filesink, I get a nice concatenation of valid JPEG2000 code
> streams), but I can't think of a reason why jp2kdec would refuse to
> handle this raw code stream. Adding to the confusion, when I try to
> rewrap the code stream into an MJ2 file, I also seem to get a corrupt file.
>
> I don't really know where to look now... Any ideas?
>
> Thanks!
>



------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Tim-Philipp Müller-2
In reply to this post by Florian Agez
On Thu, 2010-12-30 at 17:12 +0100, Florian Agez wrote:

> I'm currently trying to make a very simple pipeline that would take an
> MXF file with JPEG2000 video essence as input and display it. For now,
> the pipeline looks something like this:
>
>      gst-launch filesrc location="source.mxf" ! mxfdemux name=d  d. !
> jp2kdec ! autovideosink
>
> But that won't take me anywhere, I only get this error message:
>
>      ERROR : element /GstPipeline:pipeline0/GstMXFDemux:d : Internal
> data stream error.
>      Additional debug info:
>      mxfdemux.c(2797): gst_mxf_demux_loop ():
> /GstPipeline:pipeline0/GstMXFDemux:d:
>      stream stopped, reason not-negotiated

First thing to try in such cases is: does it work with playbin?

 gst-launch-0.10 -v playbin2 uri=file:///path/to/foo.mxf

If not, the output of that might already tell us something.

>  From what I've experimented so far, it looks like mxfdemux has no
> problem at all unwrapping the JPEG2000 code stream (if I just link the
> demuxer to a filesink, I get a nice concatenation of valid JPEG2000 code
> streams), but I can't think of a reason why jp2kdec would refuse to
> handle this raw code stream.

You might need an ffmpegcolorspace ! videoscale in front of the
autovideosink as well.

Cheers
 -Tim


------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Florian Agez
Le 02/01/2011 12:54, Tim-Philipp Müller a écrit :

> First thing to try in such cases is: does it work with playbin?
>   gst-launch-0.10 -v playbin2 uri=file:///path/to/foo.mxf
>
> If not, the output of that might already tell us something.
>
> You might need an ffmpegcolorspace ! videoscale in front of the
> autovideosink as well.
>
> Cheers
>   -Tim
I tried these, they fail with the exact same error messages (full output
log for the "playbin" command line is attached).


I also tried running the command line with GST_DEBUG=2 as advised by
Edward, the output of that didn't look really helpful to me either:

0:00:00.114181342  2907  0x98f1f00 WARN                mxf
mxfmetadata.c:482:mxf_metadata_new: No handler for type 0x015a found --
using generic metadata parser
0:00:00.114224084  2907  0x98f1f00 WARN                mxfdemux
mxfdemux.c:1244:gst_mxf_demux_handle_metadata:<d> Unknown or unhandled
metadata of type 0x015a
0:00:01.249151118  2907  0x98f1f00 WARN                mxfdemux
mxfdemux.c:2797:gst_mxf_demux_loop:<d> error: Internal data stream error.
0:00:01.249210483  2907  0x98f1f00 WARN                mxfdemux
mxfdemux.c:2797:gst_mxf_demux_loop:<d> error: stream stopped, reason
not-negotiated

So I'm going to do as Edward said and file a bug report for this. Thank
you both for your help!

--
Florian


------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

playbin.log (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Tim-Philipp Müller-2
On Mon, 2011-01-03 at 15:50 +0100, Florian Agez wrote:

> mxfdemux.c:2797:gst_mxf_demux_loop:<d> error: stream stopped, reason
> not-negotiated
>
> So I'm going to do as Edward said and file a bug report for this.

Please do. If you could make the file (or another sample file that
triggers this) available, that'd be very helpful, thanks!

Cheers
 -Tim


------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Nicolas Bertrand-4
In reply to this post by Florian Agez
Hi,
Is somebody found a fix for this topic ?
I'm facing the same problem for MXF JPEG2000.
I try it with files generated from opencinematools and openDcp. In two
case I have the same error message :

ERROR : element /GstPipeline:pipeline0/GstMXFDemux:d : Internal
data stream error.

Can I found somewhere a sample MXF JPEG2000 for tests with gstreamer ?

Cheers
Nico

Le 30/12/2010 20:12, Florian Agez a écrit :

> Hi,
>
> I'm currently trying to make a very simple pipeline that would take an
> MXF file with JPEG2000 video essence as input and display it. For now,
> the pipeline looks something like this:
>
>       gst-launch filesrc location="source.mxf" ! mxfdemux name=d  d. !
> jp2kdec ! autovideosink
>
> But that won't take me anywhere, I only get this error message:
>
>       ERROR : element /GstPipeline:pipeline0/GstMXFDemux:d : Internal
> data stream error.
>       Additional debug info:
>       mxfdemux.c(2797): gst_mxf_demux_loop ():
> /GstPipeline:pipeline0/GstMXFDemux:d:
>       stream stopped, reason not-negotiated
>
>
>   From what I've experimented so far, it looks like mxfdemux has no
> problem at all unwrapping the JPEG2000 code stream (if I just link the
> demuxer to a filesink, I get a nice concatenation of valid JPEG2000 code
> streams), but I can't think of a reason why jp2kdec would refuse to
> handle this raw code stream. Adding to the confusion, when I try to
> rewrap the code stream into an MJ2 file, I also seem to get a corrupt file.
>
> I don't really know where to look now... Any ideas?
>
> Thanks!
>

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Sebastian Dröge-7
On Mon, 2011-04-11 at 10:29 +0400, Nicolas Bertrand wrote:

> Hi,
> Is somebody found a fix for this topic ?
> I'm facing the same problem for MXF JPEG2000.
> I try it with files generated from opencinematools and openDcp. In two
> case I have the same error message :
>
> ERROR : element /GstPipeline:pipeline0/GstMXFDemux:d : Internal
> data stream error.
>
> Can I found somewhere a sample MXF JPEG2000 for tests with gstreamer ?
This is probably this bug:
https://bugzilla.gnome.org/show_bug.cgi?id=638578

To fix this we need support for the 12 bit color formats in libgstvideo,
ffmpegcolorspace and jp2kdec at least.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (205 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Nicolas Bertrand-4
Thkks for the bug link.
It is a hard  work to support '12 bit color formats'. May be I can give some help. But where to start ?

Did somebody knows if an existing opensource solution exists for playing mxf/JPEG2000 file ?

Cheers
Nico

 
 
This is probably this bug:
https://bugzilla.gnome.org/show_bug.cgi?id=638578

To fix this we need support for the 12 bit color formats in libgstvideo,
ffmpegcolorspace and jp2kdec at least.
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Sebastian Dröge-7
On Mon, 2011-04-11 at 16:04 +0400, Nicolas Bertrand wrote:
> Thkks for the bug link.
> It is a hard  work to support '12 bit color formats'. May be I can
> give some help. But where to start ?
>
> Did somebody knows if an existing opensource solution exists for
> playing mxf/JPEG2000 file ?

It's not that much work actually

Jasper (the JPEG2000 decoder library used by jp2kdec) supports 12 bit
per color component. Adding support for this in GStreamer only requires
to add some enums to libgstvideo for the new formats, implement them in
all the functions that return the rowstride, component width, etc. and
then. Afterwards conversion from/to this formats should be added to
ffmpegcolorspace and jp2kdec should output with these caps if a 12bit
per component image is found.

If you want to try that feel free to ask further questions on IRC
(FreeNode, #gstreamer) or on this list.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (205 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Vincent Torri


On Mon, 11 Apr 2011, Sebastian Dröge wrote:

> On Mon, 2011-04-11 at 16:04 +0400, Nicolas Bertrand wrote:
>> Thkks for the bug link.
>> It is a hard  work to support '12 bit color formats'. May be I can
>> give some help. But where to start ?
>>
>> Did somebody knows if an existing opensource solution exists for
>> playing mxf/JPEG2000 file ?
>
> It's not that much work actually
>
> Jasper (the JPEG2000 decoder library used by jp2kdec) supports 12 bit
> per color component. Adding support for this in GStreamer only requires
> to add some enums to libgstvideo for the new formats, implement them in
> all the functions that return the rowstride, component width, etc. and
> then. Afterwards conversion from/to this formats should be added to
> ffmpegcolorspace and jp2kdec should output with these caps if a 12bit
> per component image is found.
>
> If you want to try that feel free to ask further questions on IRC
> (FreeNode, #gstreamer) or on this list.
openjpeg ?

Vincent Torri
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Nicolas Bertrand-4
In reply to this post by Sebastian Dröge-7
For structure do you think its correct to have  in video.h smthg like :

add GST_VIDEO_FORMAT_JP2 in GstVideoFormat Enum


#define GST_VIDEO_CAPS_JP2 \
    "video/x-raw-jp2, "                                                 \
    "bpp = (int) 32, "                                                  \
    "depth = (int) 12, "                                                \
    "endianness = (int) BIG_ENDIAN, "                                   \
   
    "width = " GST_VIDEO_SIZE_RANGE ", "                                \
    "height = " GST_VIDEO_SIZE_RANGE ", "                               \
    "framerate = " GST_VIDEO_FPS_RANGE



It's not that much work actually

Jasper (the JPEG2000 decoder library used by jp2kdec) supports 12 bit
per color component. Adding support for this in GStreamer only requires
to add some enums to libgstvideo for the new formats, implement them in
all the functions that return the rowstride, component width, etc. and
then. Afterwards conversion from/to this formats should be added to
ffmpegcolorspace and jp2kdec should output with these caps if a 12bit
per component image is found.

If you want to try that feel free to ask further questions on IRC
(FreeNode, #gstreamer) or on this list.
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Sebastian Dröge-7
On Mon, 2011-04-11 at 22:46 +0400, Nicolas Bertrand wrote:
> For structure do you think its correct to have  in video.h smthg
> like :
>
> add GST_VIDEO_FORMAT_JP2 in GstVideoFormat Enum
>
>
> #define GST_VIDEO_CAPS_JP2 \
> [...]

No, it's actually RGB or YUV with 12bit per component. You should create
caps that are similar to the other RGB or YUV caps.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (205 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Nicolas Bertrand-4
Hi I still trying to start ....
For Jpeg2000 with RGB :

If I understand well, we need to switch for 32 to 64 bits represenation ...

Is This caps seems correct ?

#define GST_VIDEO_CAPS_SRGB64 \
    "video/x-raw-rgb, "                                                \
    "bpp = (int) 64, " /* ??or 36 : 2x12 bits per component */         \
    "depth = (int) 12, "                                               \
    "endianness = (int) BIG_ENDIAN, " /* TBC */                        \
    "red_mask = (long)   0xfff0000000000000, "                         \
    "green_mask = (long) 0x0000fff000000000, "                         \
    "blue_mask = (long)  0x0000000fff000000, "                         \
    "alpha_mask = (long) 0x0000000000fff000,                           \
    "width = " GST_VIDEO_SIZE_RANGE ", "                               \
    "height = " GST_VIDEO_SIZE_RANGE ", "                              \
    "framerate = " GST_VIDEO_FPS_RANGE
 

Le 11/04/2011 23:28, Sebastian Dröge a écrit :
No, it's actually RGB or YUV with 12bit per component. You should create
caps that are similar to the other RGB or YUV caps.

      
 

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: MXF-wrapped JPEG2000 decoding

Sebastian Dröge-7
On Wed, 2011-04-13 at 11:36 +0400, Nicolas Bertrand wrote:

> Hi I still trying to start ....
> For Jpeg2000 with RGB :
>
> If I understand well, we need to switch for 32 to 64 bits
> represenation ...
>
> Is This caps seems correct ?
>
> #define GST_VIDEO_CAPS_SRGB64 \
>     "video/x-raw-rgb, "                                                \
>     "bpp = (int) 64, " /* ??or 36 : 2x12 bits per component */         \
>     "depth = (int) 12, "                                               \
>     "endianness = (int) BIG_ENDIAN, " /* TBC */                        \
>     "red_mask = (long)   0xfff0000000000000, "                         \
>     "green_mask = (long) 0x0000fff000000000, "                         \
>     "blue_mask = (long)  0x0000000fff000000, "                         \
>     "alpha_mask = (long) 0x0000000000fff000,                           \
>     "width = " GST_VIDEO_SIZE_RANGE ", "                               \
>     "height = " GST_VIDEO_SIZE_RANGE ", "                              \
>     "framerate = " GST_VIDEO_FPS_RANGE
That's better, yes. But please take a look at the ARGB64 caps, you want
to do something similar to that.

Also how are the 3x12bits packed here? 36 bits and 12 bits padding? Each
component as 16 bits with 2 bits padding?

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (205 bytes) Download Attachment