adedd --bcv3 cap, working now to xrdp
authorJay Sorg <jay.sorg@gmail.com>
Wed, 25 Jul 2012 00:50:10 +0000 (17:50 -0700)
committerJay Sorg <jay.sorg@gmail.com>
Wed, 25 Jul 2012 00:50:10 +0000 (17:50 -0700)
include/freerdp/settings.h
libfreerdp-core/capabilities.c
libfreerdp-utils/args.c

index 572be4c..b0af75c 100644 (file)
@@ -391,7 +391,7 @@ struct rdp_settings
        ALIGN64 boolean jpeg_codec; /* 286 */
        ALIGN64 uint32 jpeg_codec_id; /* 287 */
        ALIGN64 uint32 jpeg_quality; /* 288 */
-       ALIGN64 uint32 preferred_codec_id; /* 289 */
+       ALIGN64 uint32 v3_codec_id; /* 289 */
        ALIGN64 uint64 paddingM[296 - 290]; /* 290 */
 
        /* Recording */
index 080ad95..98324ed 100644 (file)
@@ -1647,6 +1647,21 @@ void rdp_read_frame_acknowledge_capability_set(STREAM* s, uint16 length, rdpSett
        stream_seek_uint32(s); /* (4 bytes) */
 }
 
+void rdp_read_bitmap_cache_v3_codec_id_capability_set(STREAM* s, uint16 length, rdpSettings* settings)
+{
+       stream_seek_uint8(s); /* (1 byte) */
+}
+
+void rdp_write_bitmap_cache_v3_codec_id_capability_set(STREAM* s, rdpSettings* settings)
+{
+       uint8* header;
+
+       header = rdp_capability_set_start(s);
+       stream_write_uint8(s, settings->v3_codec_id);
+       rdp_capability_set_finish(s, header, 6);
+}
+
+
 /**
  * Write frame acknowledge capability set.\n
  * @param s stream
@@ -1799,6 +1814,10 @@ boolean rdp_read_capability_sets(STREAM* s, rdpSettings* settings, uint16 number
                                rdp_read_frame_acknowledge_capability_set(s, length, settings);
                                break;
 
+                       case 6:
+                               rdp_read_bitmap_cache_v3_codec_id_capability_set(s, length, settings);
+                               break;
+
                        default:
                                printf("unknown capability type %d\n", type);
                                break;
@@ -2106,6 +2125,15 @@ void rdp_write_confirm_active(STREAM* s, rdpSettings* settings)
                }
        }
 
+       if (settings->received_caps[6])
+       {
+               if (settings->v3_codec_id != 0)
+               {
+                       numberCapabilities++;
+                       rdp_write_bitmap_cache_v3_codec_id_capability_set(s, settings);
+               }
+       }
+
        stream_get_mark(s, em);
 
        stream_set_mark(s, lm); /* go back to lengthCombinedCapabilities */
index b19582f..a5a5c15 100644 (file)
@@ -362,17 +362,17 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
                        if (strcmp("rfx", argv[index]) == 0)
                        {
                                printf("setting rfx\n");
-                               settings->preferred_codec_id = CODEC_ID_REMOTEFX;
+                               settings->v3_codec_id = CODEC_ID_REMOTEFX;
                        }
                        else if (strcmp("nsc", argv[index]) == 0)
                        {
                                printf("setting codec nsc\n");
-                               settings->preferred_codec_id = CODEC_ID_NSCODEC;
+                               settings->v3_codec_id = CODEC_ID_NSCODEC;
                        }
                        else if (strcmp("jpeg", argv[index]) == 0)
                        {
                                printf("setting codec jpeg\n");
-                               settings->preferred_codec_id = CODEC_ID_JPEG;
+                               settings->v3_codec_id = CODEC_ID_JPEG;
                        }
                }
                else if (strcmp("--jpeg", argv[index]) == 0)